62922023-11-13 15:48:48aballaForgó rulettkerékcpp17Hibás válasz 0/1001.574s27552 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 << "\n" << count/2;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz3ms1976 KiB
2Hibás válasz3ms2024 KiB
subtask20/20
3Hibás válasz3ms2196 KiB
4Hibás válasz3ms2416 KiB
5Hibás válasz3ms2640 KiB
6Hibás válasz3ms2740 KiB
7Hibás válasz3ms2756 KiB
8Hibás válasz3ms2904 KiB
9Hibás válasz3ms2868 KiB
subtask30/15
10Hibás válasz17ms3696 KiB
11Hibás válasz23ms4104 KiB
12Hibás válasz20ms4376 KiB
13Hibás válasz17ms4192 KiB
14Hibás válasz20ms4728 KiB
15Hibás válasz23ms5612 KiB
16Hibás válasz23ms5768 KiB
17Hibás válasz23ms5708 KiB
subtask40/65
18Hibás válasz45ms6660 KiB
19Hibás válasz41ms6796 KiB
20Hibás válasz200ms7016 KiB
21Hibás válasz65ms7540 KiB
22Hibás válasz50ms7288 KiB
23Hibás válasz119ms6604 KiB
24Hibás válasz48ms7576 KiB
25Hibás válasz911ms6960 KiB
26Hibás válasz75ms21336 KiB
27Hibás válasz52ms9484 KiB
28Időlimit túllépés1.574s5252 KiB
29Hibás válasz78ms21368 KiB
30Hibás válasz100ms27552 KiB