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

Compiler report

input/code.cpp: In function 'bool check()':
input/code.cpp:24:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (s.size() == 2 * n) return true;
                         ^

Code

#include<bits/stdc++.h>

#define F first
#define S second
#define ll long long
#define ull unsigned long long
#define pb push_back
using namespace std;
int n, a[2000][2000], s1[2000], s2[2000];
bool check()
{
    set < int > s;
    for (int i = 1; i <= n; i++){
        s1[i] = 0;
        s2[i] = 0;
    }
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++){
        s1[i] += a[i][j];
        s2[j] += a[i][j];
    }
    for (int i = 1; i <= n; i++) s.insert(s1[i]);
    for (int j = 1; j <= n; j++) s.insert(s2[j]);
    if (s.size() == 2 * n) return true;
    return false;
}
void print(){
    for (int i = 1; i <= n; i++, cout << endl)
        for (int j = 1; j <= n; j++){
        s1[i] += a[i][j];
        s2[j] += a[i][j];
        cout << a[i][j] << " ";
    }
    exit(0);
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n;
    if (n < 4){
        cout << "QAQ" << endl;
        return 0;
    }
    if (n == 5){
        cout << "2 3 1 1 1" << endl;
        cout << "1 5 5 3 3 " << endl;
        cout << "2 3 5 2 4 " << endl;
        cout << "5 4 5 4 1" << endl;
        cout << "2 3 4 4 2" << endl;
        return 0;
    }
    if (n == 4){
        cout << "4 4 3 3 " << endl;
        cout << "3 4 4 2 " << endl;
        cout << "1 2 1 2 " << endl;
        cout << "3 2 1 1 " << endl;
        return 0;
    }
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
        a[i][j] = j;
    for (int i = 1; i <= n; i += 2){
            if (i == n) continue;
            int p1 = i / 2 + 1;
            int p2 = n - i / 2 - (i == n);
            int k1 = i;
            int k2 = i + 1;
            if (k2 > n) k2 -= 2;
            swap(a[k1][p1], a[k2][p2]);
        }
    if (n % 2 == 1)
    for (int i = 1; i <= n; i++){
        swap(a[n][n / 2 + 1], a[n][i]);
        if (check()) print();
        swap(a[n][n / 2 + 1], a[n][i]);
    } else
    for (int i = 1; i <= n; i++){
        swap(a[n][n / 2], a[i][n / 2 + 1]);
        if (check()) print();
        swap(a[n][n / 2], a[i][n / 2 + 1]);
    }
    for (int i = 1; i <= n; i++){
        s1[i] = 0;
        s2[i] = 0;
    }
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++){
        s1[i] += a[i][j];
        s2[j] += a[i][j];
    }
    cout << "!" << endl;
    return 0;
    for (int i = 1; i <= n; i++) cout << s1[i] << " ";
    cout << endl;
    for (int j = 1; j <= n; j++) cout << s2[j] << " ";
    cout << endl;
    print();

}

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
4 4 3 3 
3 4 4 2 
1 2 1 2 
3 2 1 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
2 3 1 1 1
1 5 5 3 3 
2 3 5 2 4 
5 4 5 4 1
2 3 4 4 2

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
6 2 3 4 5 6 
1 2 3 4 5 1 
1 5 3 4 5 6 
1 2 3 4 2 6 
1 2 4 4 5 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
7 2 3 4 5 6 7 
1 2 3 4 5 6 1 
1 6 3 4 5 6 7 
1 2 3 4 5 2 7 
1 2 5 4 5 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
8 2 3 4 4 6 7 8 
1 2 3 4 5 6 7 1 
1 7 3 4 5 6 7 8 
1 2 3 4 5 6 2 8 
1 2 6 4 5 6 7 8 
...

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
9 2 3 4 5 6 7 8 9 
1 2 3 4 5 6 7 8 1 
1 8 3 4 5 6 7 8 9 
1 2 3 4 5 6 7 2 9 
1 2 7 4 5 6 7 8 9 
...

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
10 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9 1 
1 9 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 2 10 
1 2 8 4 5 6 7 8 9 10 
...

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
4 4 3 3 
3 4 4 2 
1 2 1 2 
3 2 1 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
29 2 3 4 5 6 7 8 9 10 11 12 13...

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
48 2 3 4 5 6 7 8 9 10 11 12 13...

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
80 2 3 4 5 6 7 8 9 10 11 12 13...

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
97 2 3 4 5 6 7 8 9 10 11 12 13...

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
4 4 3 3 
3 4 4 2 
1 2 1 2 
3 2 1 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
111 2 3 4 5 6 7 8 9 10 11 12 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
506 2 3 4 5 6 7 8 9 10 11 12 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
844 2 3 4 5 6 7 8 9 10 11 12 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
991 2 3 4 5 6 7 8 9 10 11 12 1...