Submission details
Task:Anagrams
Sender:kkivimaki
Submission time:2020-09-26 15:06:10 +0300
Language:C++ (C++11)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.44 sdetails
#22.34 sdetails
#31.36 sdetails
#42.29 sdetails
#5ACCEPTED2.84 sdetails
#6ACCEPTED2.74 sdetails
#7ACCEPTED0.01 sdetails
#8ACCEPTED0.01 sdetails
#9ACCEPTED0.01 sdetails

Code

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

long long h(std::string s) {
    sort(s.begin(), s.end());
    long long m = 0;
    long long t = 1;
    for (auto c: s) {
        m += (c -97)*t;
        t*=26;
    }
    m += s.size();
    return m;
}

bool comp(string s1, string s2) {
    return h(s1) < h(s2);
}

int main() {
    int n;

    cin >> n;

    vector<string> sanat = vector<string>();

    for (int i = 0; i < n; i++) {
        string s;
        cin >> s;
        sanat.push_back(s);
    }

    sort(sanat.begin(), sanat.end(), comp);

    long long v0 = h(sanat[0]);
    int m = 0;
    int s = 0;

    for (int i = 1; i < n; i++) {
        long long v = h(sanat[i]); 
        if (v != v0) {
            v0 = v;
            s = 0;
        } else {
            if (!s) {
                s = 1;
                m += 1;
            }
        }
    }

    cout << m << endl;

    v0 = h(sanat[0]);
    int f = 1;
    for (int i = 1; i < n; i++) {
        long long v = h(sanat[i]); 
        if (v != v0) {
            v0 = v;
            if (f > 1) {
                cout << f << endl;
                for (int j = i - f; j < i; j++)
                    cout << sanat[j] << endl;
            }
            f = 1;
        } else {
            f += 1;
        }
    }
    if (f > 1) {
        cout << f << endl;
        for (int j = n - f; j < n; j++)
            cout << sanat[j] << endl;
    }

    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
68760
aakkonen
aakkosellinen
aakkosellisesti
aakkosellisuus
...

correct output
3076
2
haaraantua
raahaantua
2
...

user output
3076
2
kaupunkiliikenne
liikennekaupunki
2
...
Truncated

Test 2

Verdict:

input
370099
a
aa
aaa
aah
...

correct output
30178
2
basiparachromatin
marsipobranchiata
2
...

user output
30180
2
introconvertible
incontrovertible
2
...
Truncated

Test 3

Verdict:

input
100000
cnhmuewgnum
dxkmhzhetnmxadtcy
hfjqwavsiguwpludsketibe
xwxolrmvkz
...

correct output
0

user output
1
2
b
aa

Test 4

Verdict:

input
400000
vlcsa
eltwde
wdcwwkubs
tmuxbirj
...

correct output
0

user output
2
2
b
aa
2
...

Test 5

Verdict: ACCEPTED

input
400000
ebhfigdacjlk
aecfdijlhkgb
jfekhbidacgl
cehajbidfklg
...

correct output
1
400000
abcdeighjlfk
abcdeiglhfjk
abcdfkilejgh
...

user output
1
400000
ihdbalcfjgek
eblifdcgjhak
dkcflgheiajb
...
Truncated

Test 6

Verdict: ACCEPTED

input
400000
cbaabghadefb
hbbgfaeabdac
abaedcbgfbha
hcfadbbbeaag
...

correct output
1
400000
aaabbbcfegdh
aaabbbcfghed
aaabbbdcgfhe
...

user output
1
400000
gbbaadaechbf
hgdafacbaebb
bbadhfacabge
...
Truncated

Test 7

Verdict: ACCEPTED

input
1
a

correct output
0

user output
0

Test 8

Verdict: ACCEPTED

input
2
ab
ba

correct output
1
2
ab
ba

user output
1
2
ab
ba

Test 9

Verdict: ACCEPTED

input
2
aa
ab

correct output
0

user output
0