CSES - Datatähti 2025 alku - Results
Submission details
Task:Niitty
Sender:Chenran
Submission time:2024-11-10 17:33:59 +0200
Language:C++ (C++11)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
#40
#50
#60
Test results
testverdicttimegroup
#10.00 s1, 2, 3, 4, 5, 6details
#20.00 s1, 2, 3, 4, 5, 6details
#30.00 s1, 2, 3, 4, 5, 6details
#40.00 s1, 2, 3, 4, 5, 6details
#50.00 s1, 2, 3, 4, 5, 6details
#60.00 s2, 3, 4, 5, 6details
#70.00 s2, 3, 4, 5, 6details
#80.00 s2, 3, 4, 5, 6details
#90.00 s2, 3, 4, 5, 6details
#100.00 s3, 4, 5, 6details
#110.01 s3, 4, 5, 6details
#120.00 s3, 4, 5, 6details
#130.00 s3, 4, 5, 6details
#140.01 s4, 5, 6details
#150.01 s4, 5, 6details
#160.01 s4, 5, 6details
#170.01 s4, 5, 6details
#180.01 s5, 6details
#190.01 s5, 6details
#200.01 s5, 6details
#210.01 s5, 6details
#220.03 s6details
#230.05 s6details
#240.02 s6details
#250.03 s6details

Code

#include <iostream>
#include <map>

using namespace std;

map<char, int> sub_count(map<char, int> &total, map<char, int> &line) {
    map<char, int> answer;
    for (auto &p : total) {
        int diff = p.second - line[p.first];
        if (diff > 0) {
            answer[p.first] = diff;
        }
    }
    return answer;
}

int combination_count(int x, int y) {
    if (x <= 0 || y <= 0) return 0;
    return x * (x + 1) / 2 * y * (y + 1) / 2;
}



int main() {
    int n;
    cin >> n;

    string s;
    char grid[n][n];
    for (int i = 0; i < n; i++) {
        cin >> s;
        for (int j = 0; j < n; j++) {
            grid[i][j] = s[j];
        }
    }

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cout << grid[i][j];
        }
        cout << endl;
    }

    map<char, int> rows[n];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            rows[i][grid[i][j]]++;
        }
    }

    map<char, int> cols[n];
    for (int j = 0; j < n; j++) {
        for (int i = 0; i < n; i++) {
            cols[j][grid[i][j]]++;
        }
    }

    map<char, int> total;
    for (int i = 0; i < n; i++) {
        for (auto &p : rows[i]) {
            total[p.first] += p.second;
        }
    }

    map<char, int> temp;
    temp = total;
    int down_index = 0;
    while (down_index < n && temp.size() == total.size()) {
        temp = sub_count(temp, rows[down_index++]);
    }

    temp = total;
    int up_index = n - 1;
    while (up_index >= 0 && temp.size() == total.size()) {
        temp = sub_count(temp, rows[up_index--]);
    }

    temp = total;
    int left_index = 0;
    while (left_index < n && temp.size() == total.size()) {
        temp = sub_count(temp, cols[left_index++]);
    }

    temp = total;
    int right_index = n - 1;
    while (right_index >= 0 && temp.size() == total.size()) {
        temp = sub_count(temp, cols[right_index--]);
    }

    int total_comb = combination_count(n, n);

    int u = combination_count(up_index + 1, n);
    int l = combination_count(left_index + 1, n);
    int d = combination_count(n - down_index, n);
    int r = combination_count(n - right_index, n);

    int ul = combination_count(up_index + 1, left_index + 1);
    int ud = combination_count(right_index - left_index + 1, n);
    int ur = combination_count(up_index + 1, n - right_index);
    int ld = combination_count(n - down_index, left_index + 1);
    int lr = combination_count(up_index - down_index + 1, n);
    int dr = combination_count(n - down_index, n - right_index);

    int um = combination_count(right_index - left_index + 1, up_index + 1);
    int lm = combination_count(up_index - down_index + 1, left_index + 1);
    int dm = combination_count(right_index - left_index + 1, n - down_index);
    int rm = combination_count(up_index - down_index + 1, n - right_index);

    int c = combination_count(right_index - left_index + 1, up_index - down_index + 1);

    int result = total_comb - (u + l + d + r) + (ul + ud + ur + ld + lr + dr) - (um + lm + dm + rm) + c;

    cout << result << endl;

    return 0;
}

Test details

Test 1

Group: 1, 2, 3, 4, 5, 6

Verdict:

input
10
TNCTNPNTPC
NPPNTNTPTP
NTNTTCNTCT
NPCPNPPNTT
...

correct output
2035

user output
TNCTNPNTPC
NPPNTNTPTP
NTNTTCNTCT
NPCPNPPNTT
TTCTCTTNNN
...

Test 2

Group: 1, 2, 3, 4, 5, 6

Verdict:

input
10
NFWQLWNWYS
DZOQJVXFPJ
CNHXPXMCQD
QRTBVNLTQC
...

correct output
9

user output
NFWQLWNWYS
DZOQJVXFPJ
CNHXPXMCQD
QRTBVNLTQC
FSYJQGXJWL
...

Test 3

Group: 1, 2, 3, 4, 5, 6

Verdict:

input
10
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
...

correct output
3025

user output
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
...

Test 4

Group: 1, 2, 3, 4, 5, 6

Verdict:

input
10
FFFFFFFFFF
FFFFFCFFFF
FFFFFFJFFF
FFFFFFFFFF
...

correct output
12

user output
FFFFFFFFFF
FFFFFCFFFF
FFFFFFJFFF
FFFFFFFFFF
FFFFFFFFVF
...

Test 5

Group: 1, 2, 3, 4, 5, 6

Verdict:

input
1
X

correct output
1

user output
X
-5

Test 6

Group: 2, 3, 4, 5, 6

Verdict:

input
20
BBCBUBOUOBBCUUBBCOUO
BOUCOOCUBCOOOCOBOCUO
UCCUUUOBCOCBCBUBUCOO
BUOBUCUCUOOBCOOUBUOO
...

correct output
38724

user output
BBCBUBOUOBBCUUBBCOUO
BOUCOOCUBCOOOCOBOCUO
UCCUUUOBCOCBCBUBUCOO
BUOBUCUCUOOBCOOUBUOO
UCUCBOOBUUCOOUOBCOCB
...

Test 7

Group: 2, 3, 4, 5, 6

Verdict:

input
20
CBGLSHGZHYZDWBNDBJUG
SMUXOJQYPXZDTMJUIWOJ
XIDSTNBGHKRKOVUVMINB
MTQGCFRUHQKALXRNCQGS
...

correct output
8334

user output
CBGLSHGZHYZDWBNDBJUG
SMUXOJQYPXZDTMJUIWOJ
XIDSTNBGHKRKOVUVMINB
MTQGCFRUHQKALXRNCQGS
ULXSAYPHBPKWVIWWOJSW
...

Test 8

Group: 2, 3, 4, 5, 6

Verdict:

input
20
KKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKK
...

correct output
44100

user output
KKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKK
...

Test 9

Group: 2, 3, 4, 5, 6

Verdict:

input
20
AAAAAAAAXAAAAAAAAAAA
AAAWAAAAAAAAAAAAAOAA
AAAAAAAAAAAAAAAAAPAA
AAAAAAAAKAAAAAAAAAAZ
...

correct output
18

user output
AAAAAAAAXAAAAAAAAAAA
AAAWAAAAAAAAAAAAAOAA
AAAAAAAAAAAAAAAAAPAA
AAAAAAAAKAAAAAAAAAAZ
AAAAAAAAAAAAAAAAAAAA
...

Test 10

Group: 3, 4, 5, 6

Verdict:

input
50
GRGREEEGREGXRXXEGXXREXGRRRGRRR...

correct output
1584665

user output
GRGREEEGREGXRXXEGXXREXGRRRGRRR...

Test 11

Group: 3, 4, 5, 6

Verdict:

input
50
AITIISJUHCCRZNKSDCNQKYSQRINFWJ...

correct output
1077746

user output
AITIISJUHCCRZNKSDCNQKYSQRINFWJ...

Test 12

Group: 3, 4, 5, 6

Verdict:

input
50
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO...

correct output
1625625

user output
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO...

Test 13

Group: 3, 4, 5, 6

Verdict:

input
50
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...

correct output
1680

user output
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...

Test 14

Group: 4, 5, 6

Verdict:

input
100
NNCMDCDDCCNNNDNCMMNCDCDCCDCDNM...

correct output
25325366

user output
NNCMDCDDCCNNNDNCMMNCDCDCCDCDNM...

Test 15

Group: 4, 5, 6

Verdict:

input
100
LIMQQIHASECROEVILNVULGWZJPPKOG...

correct output
22342463

user output
LIMQQIHASECROEVILNVULGWZJPPKOG...

Test 16

Group: 4, 5, 6

Verdict:

input
100
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT...

correct output
25502500

user output
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT...

Test 17

Group: 4, 5, 6

Verdict:

input
100
QXQQQQQQQQQQQQQQQQQQQQQQQQQQQQ...

correct output
25650

user output
QXQQQQQQQQQQQQQQQQQQQQQQQQQQQQ...

Test 18

Group: 5, 6

Verdict:

input
200
NAANANMMKNKKAKMKMAKNKMNKMMNNAA...

correct output
403292767

user output
NAANANMMKNKKAKMKMAKNKMNKMMNNAA...

Test 19

Group: 5, 6

Verdict:

input
200
OMYWATTLURKQPTKEFMGGYAOONXWVSC...

correct output
388111321

user output
OMYWATTLURKQPTKEFMGGYAOONXWVSC...

Test 20

Group: 5, 6

Verdict:

input
200
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...

correct output
404010000

user output
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...

Test 21

Group: 5, 6

Verdict:

input
200
LLLLLLLLLLLLLLLLLHLLLLLLLLLLLL...

correct output
14159445

user output
LLLLLLLLLLLLLLLLLHLLLLLLLLLLLL...

Test 22

Group: 6

Verdict:

input
500
VVHWVUHVHUWWWVUUUWVUUHUUWHWUVW...

correct output
15683003812

user output
VVHWVUHVHUWWWVUUUWVUUHUUWHWUVW...

Test 23

Group: 6

Verdict:

input
500
OIMZGEQSBMBDSDXSWRFNKSGFEBBTJE...

correct output
15575906951

user output
OIMZGEQSBMBDSDXSWRFNKSGFEBBTJE...

Test 24

Group: 6

Verdict:

input
500
IIIIIIIIIIIIIIIIIIIIIIIIIIIIII...

correct output
15687562500

user output
IIIIIIIIIIIIIIIIIIIIIIIIIIIIII...

Test 25

Group: 6

Verdict:

input
500
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW...

correct output
3058970930

user output
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW...