CSES - Datatähti Open 2017 - Results
Submission details
Task:Grid
Sender:cuber2460
Submission time:2017-01-21 22:39:53 +0200
Language:C++
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED35
#2ACCEPTED21
#3ACCEPTED44
Test results
testverdicttimegroup
#1ACCEPTED0.03 s1details
#2ACCEPTED0.04 s1details
#3ACCEPTED0.03 s1details
#4ACCEPTED0.03 s1details
#5ACCEPTED0.04 s1details
#6ACCEPTED0.04 s1details
#7ACCEPTED0.04 s1details
#8ACCEPTED0.05 s1details
#9ACCEPTED0.05 s1details
#10ACCEPTED0.05 s2details
#11ACCEPTED0.03 s2details
#12ACCEPTED0.04 s2details
#13ACCEPTED0.04 s2details
#14ACCEPTED0.04 s2details
#15ACCEPTED0.04 s2details
#16ACCEPTED0.04 s3details
#17ACCEPTED0.04 s3details
#18ACCEPTED0.04 s3details
#19ACCEPTED0.09 s3details
#20ACCEPTED0.10 s3details
#21ACCEPTED0.18 s3details

Code

#include <iostream>
#include <set>
#include <algorithm>
#include <vector>
using namespace std;

const int N = 1000;
int n;
int t[N + 7][N + 7];
int sum1[N + 7];
int sum2[N + 7];
int ile[N + 7];

bool popraw() {	
	vector <int> S;
	for(int i = 1; i <= n; ++i) {
		S.push_back(sum1[i]);
		S.push_back(sum2[i]);
	}
	
	sort(S.begin(), S.end());
	
	int ok = 1;
	for(int i = 1; i < (int) S.size(); ++i) if(S[i] == S[i - 1]) ok = 0;
	if(ok) return 1;
	int a = 1 + rand() % n;
	int b = 1 + rand() % n;
	int c = 1 + rand() % n;
	int d = 1 + rand() % n;
	sum1[a] += t[c][d] - t[a][b];
	sum2[b] += t[c][d] - t[a][b];
	sum1[c] += t[a][b] - t[c][d];
	sum2[d] += t[a][b] - t[c][d];
	swap(t[a][b], t[c][d]);
	return 0;
}

int main() {
	ios_base::sync_with_stdio(0);
	cin >> n;
	if(n < 4) {
		cout << "QAQ\n";
		return 0;
	}
	for(int i = 1; i <= n; ++i) {
		for(int j = 1; j <= n; ++j) {
			if(i + j <= n + 1) {
				t[i][j] = (i + j - 2) * (i + j - 1) / 2;
				t[i][j] += i;
			}
			else {
				int x = n - i + 1;
				int y = n - j + 1;
				t[i][j] = n * n - (x + y - 2) * (x + y - 1) / 2 - x + 1	;
			}
			
			t[i][j] = (t[i][j] + n - 1) / n;
		}
	}
	for(int i = 1; i <= n; ++i) sum1[i] = sum2[i] = 0;
	for(int i = 1; i <= n; ++i) {
		for(int j = 1; j <= n; ++j) {
			sum1[i] += t[i][j];
			sum2[j] += t[i][j];
		}
	}
	
	while(!popraw());
	
	for(int i = 1; i <= n; ++i) {
		for(int j = 1; j <= n; ++j) cout << t[i][j] << ' ';
		cout << endl;
	}
	return 0;
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
2

correct output
QAQ

user output
QAQ

Test 2

Group: 1

Verdict: ACCEPTED

input
3

correct output
QAQ

user output
QAQ

Test 3

Group: 1

Verdict: ACCEPTED

input
4

correct output
3 4 3 4
3 1 1 2
4 4 3 2
2 2 1 1

user output
2 1 3 1 
4 2 3 2 
4 3 4 1 
4 2 3 1 

Test 4

Group: 1

Verdict: ACCEPTED

input
5

correct output
2 3 4 1 1 
3 4 2 1 2 
4 2 3 1 3 
4 3 2 1 4 
5 5 5 5 5 

user output
1 1 3 3 1 
5 4 5 5 4 
1 2 3 2 2 
4 3 4 2 1 
2 5 3 5 4 

Test 5

Group: 1

Verdict: ACCEPTED

input
6

correct output
2 3 4 5 1 1 
3 4 5 2 1 2 
4 5 2 3 1 3 
5 2 3 4 1 4 
5 4 3 2 1 5 
...

user output
1 1 1 2 2 3 
1 1 2 2 3 4 
1 2 3 3 4 5 
2 3 4 4 5 6 
3 4 5 5 6 6 
...

Test 6

Group: 1

Verdict: ACCEPTED

input
7

correct output
2 3 4 5 6 1 1 
3 4 5 6 2 1 2 
4 5 6 2 3 1 3 
5 6 2 3 4 1 4 
6 2 3 4 5 1 5 
...

user output
1 1 1 1 2 3 4 
1 1 2 3 5 4 5 
1 2 2 3 4 3 5 
2 2 2 4 5 6 6 
3 3 4 5 6 6 7 
...

Test 7

Group: 1

Verdict: ACCEPTED

input
8

correct output
2 3 4 5 6 7 1 1 
3 4 5 6 7 2 1 2 
4 5 6 7 2 3 1 3 
5 6 7 2 3 4 1 4 
6 7 2 3 4 5 1 5 
...

user output
1 1 1 1 2 2 3 4 
1 1 1 2 3 3 4 5 
1 2 2 3 3 4 5 6 
2 2 3 4 4 5 6 7 
2 3 4 5 5 6 7 7 
...

Test 8

Group: 1

Verdict: ACCEPTED

input
9

correct output
2 3 4 5 6 7 8 1 1 
3 4 5 6 7 8 2 1 2 
4 5 6 7 8 2 3 1 3 
5 6 7 8 2 3 4 1 4 
6 7 8 2 3 4 5 1 5 
...

user output
5 2 5 5 2 2 3 5 5 
1 6 1 8 2 3 4 7 5 
1 1 2 1 3 8 3 6 7 
2 2 4 3 4 5 6 7 7 
2 3 1 4 7 6 7 4 8 
...

Test 9

Group: 1

Verdict: ACCEPTED

input
10

correct output
2 3 4 5 6 7 8 9 1 1 
3 4 5 6 7 8 9 2 1 2 
4 5 6 7 8 9 2 3 1 3 
5 6 7 8 9 2 3 4 1 4 
6 7 8 9 2 3 4 5 1 5 
...

user output
1 1 1 1 2 2 3 3 4 5 
1 1 1 2 2 3 3 4 5 6 
1 1 2 2 3 4 4 5 6 7 
1 2 2 3 4 4 5 6 7 8 
2 2 3 4 5 5 6 7 8 8 
...

Test 10

Group: 2

Verdict: ACCEPTED

input
3

correct output
QAQ

user output
QAQ

Test 11

Group: 2

Verdict: ACCEPTED

input
4

correct output
3 4 3 4
3 1 1 2
4 4 3 2
2 2 1 1

user output
2 1 3 1 
4 2 3 2 
4 3 4 1 
4 2 3 1 

Test 12

Group: 2

Verdict: ACCEPTED

input
29

correct output
2 3 4 5 6 7 8 9 10 11 12 13 14...

user output
1 1 1 1 1 1 1 1 2 2 2 3 3 4 4 ...

Test 13

Group: 2

Verdict: ACCEPTED

input
48

correct output
2 3 4 5 6 7 8 9 10 11 12 13 14...

user output
1 1 1 1 1 1 1 1 1 1 2 2 2 2 3 ...

Test 14

Group: 2

Verdict: ACCEPTED

input
80

correct output
2 3 4 5 6 7 8 9 10 11 12 13 14...

user output
1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 ...

Test 15

Group: 2

Verdict: ACCEPTED

input
97

correct output
2 3 4 5 6 7 8 9 10 11 12 13 14...

user output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 ...

Test 16

Group: 3

Verdict: ACCEPTED

input
3

correct output
QAQ

user output
QAQ

Test 17

Group: 3

Verdict: ACCEPTED

input
4

correct output
3 4 3 4
3 1 1 2
4 4 3 2
2 2 1 1

user output
2 1 3 1 
4 2 3 2 
4 3 4 1 
4 2 3 1 

Test 18

Group: 3

Verdict: ACCEPTED

input
111

correct output
2 3 4 5 6 7 8 9 10 11 12 13 14...

user output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

Test 19

Group: 3

Verdict: ACCEPTED

input
506

correct output
2 3 4 5 6 7 8 9 10 11 12 13 14...

user output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

Test 20

Group: 3

Verdict: ACCEPTED

input
844

correct output
2 3 4 5 6 7 8 9 10 11 12 13 14...

user output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

Test 21

Group: 3

Verdict: ACCEPTED

input
991

correct output
2 3 4 5 6 7 8 9 10 11 12 13 14...

user output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...