62932023-11-13 15:50:35aballaForgó rulettkerékcpp17Hibás válasz 0/1001.559s27596 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::unordered_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(0);
    for(int i = 0; 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva4ms1972 KiB
2Elfogadva3ms2180 KiB
subtask20/20
3Elfogadva3ms2252 KiB
4Elfogadva3ms2612 KiB
5Hibás válasz3ms2676 KiB
6Hibás válasz3ms3032 KiB
7Elfogadva3ms3408 KiB
8Hibás válasz3ms3320 KiB
9Hibás válasz3ms3472 KiB
subtask30/15
10Hibás válasz17ms4376 KiB
11Hibás válasz21ms4536 KiB
12Hibás válasz20ms4696 KiB
13Hibás válasz17ms4356 KiB
14Elfogadva20ms4544 KiB
15Elfogadva23ms5228 KiB
16Elfogadva23ms5472 KiB
17Elfogadva21ms5408 KiB
subtask40/65
18Hibás válasz45ms6416 KiB
19Hibás válasz43ms6552 KiB
20Hibás válasz200ms6660 KiB
21Hibás válasz65ms7136 KiB
22Hibás válasz50ms7100 KiB
23Elfogadva119ms6484 KiB
24Hibás válasz48ms7516 KiB
25Hibás válasz902ms6976 KiB
26Hibás válasz74ms21224 KiB
27Hibás válasz54ms9572 KiB
28Időlimit túllépés1.559s5468 KiB
29Elfogadva79ms21176 KiB
30Hibás válasz104ms27596 KiB