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...