62942023-11-13 16:27:11aballaForgó rulettkerékcpp17Hibás válasz 0/1001.57s28440 KiB
#include <bits/stdc++.h>

int n, m;

std::string tagid(std::string str) {
    std::string s = str + str, k, min;
    min = str;
    for(int i = 1; i < m; i++) {
        k = std::string(&s[i], &s[i+m]);
        if(min > k) min = k;
    }
    return min;
}

int main() {
    long long count = 0, cc = 0;
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::string cache;
    std::vector<std::string> ids;
    std::vector<int> veccount;
    std::map<std::string, int> map;
    std::cin >> n >> m;
    for(int i = 0; i < n; i++) {
        std::cin >> cache; 
        ids.push_back(tagid(cache));
    }

    map.insert({ids[0], 0});
    veccount.push_back(1);

    for(int i = 1; i < n; i++) {

        if (auto search = map.find(ids[i]); search != map.end()) {
            veccount[search->second]++;
        }
        else {
            map.insert({ids[i], cc});
            veccount.push_back(1);
            cc++;
        }
    }

    for(const auto x : veccount) {
        count += x*(x-1);
    }
    std::cout << count/2 << std::flush;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1892 KiB
2Elfogadva3ms2084 KiB
subtask20/20
3Elfogadva3ms2296 KiB
4Elfogadva3ms2516 KiB
5Hibás válasz3ms2748 KiB
6Hibás válasz3ms3088 KiB
7Elfogadva3ms3432 KiB
8Hibás válasz3ms3508 KiB
9Hibás válasz3ms3708 KiB
subtask30/15
10Hibás válasz17ms4520 KiB
11Hibás válasz21ms4848 KiB
12Hibás válasz20ms5104 KiB
13Hibás válasz17ms4764 KiB
14Elfogadva20ms4948 KiB
15Elfogadva23ms5448 KiB
16Elfogadva23ms5720 KiB
17Elfogadva23ms5484 KiB
subtask40/65
18Hibás válasz45ms6376 KiB
19Hibás válasz43ms6584 KiB
20Hibás válasz199ms6992 KiB
21Hibás válasz67ms7436 KiB
22Hibás válasz52ms6968 KiB
23Elfogadva119ms6240 KiB
24Hibás válasz48ms7220 KiB
25Hibás válasz904ms6980 KiB
26Hibás válasz93ms21112 KiB
27Hibás válasz57ms9444 KiB
28Időlimit túllépés1.57s5240 KiB
29Elfogadva96ms21180 KiB
30Hibás válasz160ms28440 KiB