| Task: | Judge correctness |
| Sender: | Ace of Spades |
| Submission time: | 2016-05-28 15:59:52 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | WRONG ANSWER |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.06 s | details |
| #2 | WRONG ANSWER | 0.54 s | details |
| #3 | WRONG ANSWER | 1.47 s | details |
| #4 | ACCEPTED | 1.35 s | details |
| #5 | WRONG ANSWER | 1.79 s | details |
| #6 | WRONG ANSWER | 1.79 s | details |
| #7 | ACCEPTED | 1.30 s | details |
| #8 | ACCEPTED | 1.30 s | details |
| #9 | ACCEPTED | 1.31 s | details |
| #10 | WRONG ANSWER | 1.80 s | details |
Code
#include<bits/stdc++.h>
using namespace std;
const int MN = 5555;
const int MOD = 64;
const int N = 13;
short a[MN][MN];
short x[MN][MN];
short sumA[3*N][MN];
short sumX[3*N][MN];
bool lol[MN];
int main(void) {
cin.tie(0);
ios_base::sync_with_stdio(false);
cout << fixed << setprecision(12);
int tt;
cin>>tt;
for(int xx = 0; xx < tt; ++xx) {
/*
memset(a, 0, sizeof a);
memset(x, 0, sizeof x);
memset(sumA, 0, sizeof sumA);
memset(sumX, 0, sizeof sumX);
*/
int n;
cin>>n;
for(int i = 0; i < n; ++i) {
for(int j = 0; j < n; ++j) {
a[i][j] = 0;
x[i][j] = 0;
}
}
for(int i = 0; i < 3*N; ++i) {
for(int j = 0; j < n; ++j) {
sumA[i][j] = 0;
sumX[i][j] = 0;
}
}
for(int i = 0; i < n; ++i ) {
for(int j = 0; j < n; ++j) {
char q = 0;
cin>>q;
if(q >= 'A' && q <= 'Z') {
a[i][j] = q - 'A';
}
if(q >= 'a' && q <= 'z') {
a[i][j] = q - 'a'+26;
}
if(q >= '0' && q <= '9') {
a[i][j] = q-'0'+52;
}
if(q == '+') a[i][j] = 62;
if(q == '/') a[i][j] = 63;
// cout<<a[i][j]<<' ';
}
//cout<<'\n';
}
//cout<<'\n';
for(int i = 0; i < n; ++i ) {
for(int j = 0; j < n; ++j) {
char q = 0;
cin>>q;
if(q >= 'A' && q <= 'Z') {
x[i][j] = q - 'A';
}
if(q >= 'a' && q <= 'z') {
x[i][j] = q - 'a'+26;
}
if(q >= '0' && q <= '9') {
x[i][j] = q-'0'+52;
}
if(q == '+') x[i][j] = 62;
if(q == '/') x[i][j] = 63;
// cout<<x[i][j]<<' ';
}
//cout<<'\n';
}
//cout<<'\n';
int q = 1;
for(int i = 0; i < 6*N; ++i, q *= 2) {
/*
for(int k = 0; k < n; ++k) {
if((k>>i)%2 == 0) {
cout<<k<<' ';
}
cout<<'\n';
}
continue;
*/
if(i < N) {
for(int k = 0; k < n; ++k) {
if((k>>i)%2 == 0) {
for(int j = 0; j < n; ++j) {
sumA[0][j] += a[k][j];
sumX[0][j] += x[k][j];
// cout<<k<<' ';
}
}
// cout<<'\n';
//cout<<sumX[i][j]<<' '<<sumA[i][j]<<' '<<"asdfa\n";
}
for(int j = 0; j < n; ++j) {
sumA[0][j] %= MOD;
sumX[0][j] %= MOD;
}
}
else {
for(int j = 0; j < n; ++j) {
lol[j] = rand()%2;
}
for(int k = 0; k < n; ++k) {
if(lol[k]) {
for(int j = 0; j < n; ++j) {
sumA[0][j] += a[k][j];
sumX[0][j] += x[k][j];
}
}
// cout<<'\n';
//cout<<sumX[i][j]<<' '<<sumA[i][j]<<' '<<"asdfa\n";
}
for(int j = 0; j < n; ++j) {
sumA[0][j] %= MOD;
sumX[0][j] %= MOD;
}
}
//cout<<'\n';
for(int j = 0; j < n; ++j) {
int q = 0;
int w = sumX[0][j];
for(int k = 0; k < n; ++k) {
q += sumA[0][k] * a[j][k];
}
q %= MOD;
w %= MOD;
// cout<<q<<' '<<w<<'\n';
if(q != w) {
goto ohi;
}
}
}
cout<<1<<'\n';
continue;
ohi:;
cout<<0<<'\n';
}
return 0;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 500 12 N49lyQuAZh1l PwNJA+wuTBr+ HO09lJg8kbup ... |
| correct output |
|---|
| 0 0 1 1 1 ... |
| user output |
|---|
| 0 0 1 1 1 ... |
Test 2
Verdict: WRONG ANSWER
| input |
|---|
| 3 666 OvHf9jpB0RViia/ZD3gRQ7o1FELYh3... |
| correct output |
|---|
| 0 0 1 |
| user output |
|---|
| 0 0 0 |
Test 3
Verdict: WRONG ANSWER
| input |
|---|
| 2 517 RWVknnH+hL6AfeKFbOu6OuAJL9dvLw... |
| correct output |
|---|
| 0 1 |
| user output |
|---|
| 0 0 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 1 5000 QP9pS1MOq6eDDKGQh//TrJUIvbM53a... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 5
Verdict: WRONG ANSWER
| input |
|---|
| 1 5000 RSX7ZuQE6A94s8s+9oP1uCDHRkmZ+7... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 0 |
Test 6
Verdict: WRONG ANSWER
| input |
|---|
| 1 5000 b0V0j4vQ8CeiJrcUk2yssPF1B9EEDb... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 0 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 1 5000 VLdpW71f4Cdr+xdCRlwmAnNfMjqwMU... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 1 5000 kBZaGETPWmyNR4NCvCPbJnvq2+JBfP... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 1 5000 PES9AhJn+FZBVO5gqRLYbavSvaDUfU... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 10
Verdict: WRONG ANSWER
| input |
|---|
| 1 5000 EoXwgdrAtKtV4M7jn0jAkNwkJX+be9... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 0 |
