62952023-11-13 16:30:51aballaForgó rulettkerékcpp17Időlimit túllépés 35/1001.549s27220 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 = 1;
    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(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
1Elfogadva3ms1828 KiB
2Elfogadva3ms2052 KiB
subtask220/20
3Elfogadva3ms2284 KiB
4Elfogadva3ms2316 KiB
5Elfogadva3ms2452 KiB
6Elfogadva3ms2556 KiB
7Elfogadva3ms2904 KiB
8Elfogadva3ms2764 KiB
9Elfogadva3ms2764 KiB
subtask315/15
10Elfogadva17ms3472 KiB
11Elfogadva21ms3924 KiB
12Elfogadva20ms3888 KiB
13Elfogadva17ms3940 KiB
14Elfogadva20ms4108 KiB
15Elfogadva23ms4664 KiB
16Elfogadva23ms4932 KiB
17Elfogadva21ms4880 KiB
subtask40/65
18Elfogadva45ms5876 KiB
19Elfogadva41ms6196 KiB
20Elfogadva201ms6256 KiB
21Elfogadva65ms7008 KiB
22Elfogadva52ms6584 KiB
23Elfogadva120ms5724 KiB
24Elfogadva48ms6904 KiB
25Elfogadva903ms6260 KiB
26Elfogadva75ms20508 KiB
27Elfogadva54ms8856 KiB
28Időlimit túllépés1.549s4612 KiB
29Elfogadva75ms20656 KiB
30Elfogadva97ms27220 KiB