QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#465230 | #8830. Breaking Bad | ucup-team1198# | TL | 69ms | 50268kb | C++20 | 3.7kb | 2024-07-06 19:10:00 | 2024-07-06 19:10:00 |
Judging History
answer
#include <map>
#include <set>
#include <array>
#include <cmath>
#include <deque>
#include <bitset>
#include <random>
#include <string>
#include <vector>
#include <cassert>
#include <complex>
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>
using namespace std;
const int MAXN = 1e3 + 100;
int a[MAXN][MAXN];
int shift(char mask, int d) {
return ((mask << d) & 31) | (mask >> (5 - d));
}
int add(int a, int b) {
return a + b >= 5 ? a + b - 5 : a + b;
}
int id[MAXN][MAXN];
char dp[MAXN * 12][64][64];
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cin >> a[i][j];
}
}
int cnt = 0;
while (cnt < 4) {
int L = 2 * cnt;
bool found = false;
for (int i = L + 1; i < n && !found; ++i) {
for (int j = L + 1; j < n && !found; ++j) {
if (add(a[i][j], a[L][L]) != add(a[i][L], a[L][j])) {
found = true;
for (int t = 0; t < n; ++t) {
swap(a[i][t], a[L + 1][t]);
}
for (int t = 0; t < n; ++t) {
swap(a[t][j], a[t][L + 1]);
}
}
}
}
if (!found) break;
++cnt;
}
if (cnt >= 4) {
cout << "YYYYY\n";
return 0;
}
int cur_id = 0;
for (int i = n; i >= 2 * cnt; --i) {
for (int j = n; j >= 2 * cnt; --j) {
if (abs(i - j) <= 2 * cnt) {
id[i][j] = cur_id++;
}
}
}
for (int i = 0; i <= n; ++i) {
for (int j = 0; j <= n; ++j) {
if (abs(i - j) > 2 * cnt) {
id[i][j] = cur_id;
}
}
}
dp[id[n][n]][0][0] = 1;
for (int i = n; i >= 2 * cnt; --i) {
for (int j = n; j >= 2 * cnt; --j) {
/// cerr << i << " " << j << endl;
if (abs(i - j) > 2 * cnt) continue;
if (i == n && j == n) continue;
for (int maskr = 0; maskr < (1 << (2 * cnt)); ++maskr) {
for (int maskc = 0; maskc < (1 << (2 * cnt)); ++maskc) {
int I = id[i][j];
dp[I][maskr][maskc] = 0;
if (i != n && j != n) {
dp[I][maskr][maskc] |= shift(dp[id[i + 1][j + 1]][maskr][maskc], a[i][j]);
}
if (i != n) {
for (int c = 0; c < 2 * cnt; ++c) {
if (maskc & (1 << c)) {
dp[I][maskr][maskc] |= shift(dp[id[i + 1][j]][maskr][maskc ^ (1 << c)], a[i][c]);
}
}
}
if (j != n) {
for (int r = 0; r < 2 * cnt; ++r) {
if (maskr & (1 << r)) {
dp[I][maskr][maskc] |= shift(dp[id[i][j + 1]][maskr ^ (1 << r)][maskc], a[r][j]);
}
}
}
}
}
}
}
int I = id[2 * cnt][2 * cnt];
char ans = 0;
for (int maskr = 0; maskr < (1 << (2 * cnt)); ++maskr) {
for (int maskc = 0; maskc < (1 << (2 * cnt)); ++maskc) {
if (dp[I][maskr][maskc] == 0) continue;
vector<int> rows;
vector<int> cols;
for (int i = 0; i < 2 * cnt; ++i) {
if (!(maskr & (1 << i))) {
rows.push_back(i);
}
if (!(maskc & (1 << i))) {
cols.push_back(i);
}
}
do {
int sum = 0;
for (int i = 0; i < (int)cols.size(); ++i) {
sum = add(sum, a[rows[i]][cols[i]]);
}
ans |= shift(dp[I][maskr][maskc], sum);
} while (next_permutation(cols.begin(), cols.end()));
}
}
for (int i = 0; i < 5; ++i) {
if (ans & (1 << i)) {
cout << "Y";
} else {
cout << "N";
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 7628kb
input:
2 0 4 4 0
output:
YNNYN
result:
ok "YNNYN"
Test #2:
score: 0
Accepted
time: 0ms
memory: 7720kb
input:
2 1 1 1 1
output:
NNYNN
result:
ok "NNYNN"
Test #3:
score: 0
Accepted
time: 1ms
memory: 7724kb
input:
4 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 0
output:
YYYYN
result:
ok "YYYYN"
Test #4:
score: 0
Accepted
time: 1ms
memory: 7656kb
input:
4 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0
output:
YYYYN
result:
ok "YYYYN"
Test #5:
score: 0
Accepted
time: 1ms
memory: 7780kb
input:
10 1 4 2 0 0 2 0 1 3 3 0 3 1 4 4 1 4 0 2 2 1 4 2 0 0 2 0 1 0 3 0 3 1 4 4 1 4 0 2 2 4 2 0 3 3 0 3 4 1 1 2 0 3 1 1 3 1 2 4 4 4 2 0 3 3 0 3 4 1 1 2 0 3 1 1 3 1 2 4 4 1 4 2 0 0 2 0 1 3 3 3 1 4 2 2 4 2 3 0 0
output:
NYNNY
result:
ok "NYNNY"
Test #6:
score: 0
Accepted
time: 1ms
memory: 7748kb
input:
10 4 4 4 1 3 4 1 4 3 0 3 3 3 0 2 3 0 3 2 4 3 3 3 0 2 3 0 3 2 4 4 4 4 1 3 4 1 4 3 0 2 2 2 4 1 2 4 2 1 3 2 2 2 4 1 3 4 2 1 3 4 4 4 1 3 4 1 4 3 0 3 3 3 0 2 3 0 3 2 4 2 2 2 4 1 2 4 2 1 3 4 4 4 1 3 4 1 1 3 0
output:
YYYNY
result:
ok "YYYNY"
Test #7:
score: 0
Accepted
time: 1ms
memory: 8076kb
input:
10 1 2 0 4 2 3 4 0 2 3 0 1 4 3 1 2 3 4 1 2 4 0 3 2 0 1 2 3 0 1 1 2 0 4 2 3 4 0 2 3 3 4 2 1 4 0 1 2 4 0 0 1 4 3 1 2 3 4 1 2 2 3 1 0 3 4 0 1 3 4 3 1 1 1 4 0 1 2 4 0 1 2 0 4 2 3 4 0 2 3 1 3 0 4 2 3 4 0 2 3
output:
NYYYY
result:
ok "NYYYY"
Test #8:
score: 0
Accepted
time: 1ms
memory: 7952kb
input:
10 3 4 0 3 2 2 0 4 0 2 0 1 2 0 4 4 2 1 2 4 2 3 4 2 1 1 4 3 4 1 0 1 2 0 4 4 2 1 2 4 0 1 2 0 4 4 2 1 2 4 0 1 2 0 4 4 2 1 2 4 3 4 0 3 2 2 0 4 0 2 0 1 2 0 4 4 2 1 2 4 3 4 0 3 2 2 0 4 0 2 0 1 2 0 4 4 2 1 2 4
output:
NYNNN
result:
ok "NYNNN"
Test #9:
score: 0
Accepted
time: 0ms
memory: 8076kb
input:
10 4 1 3 1 2 0 3 2 4 4 0 2 4 2 3 1 4 3 0 0 1 1 1 1 2 0 3 2 4 1 2 4 1 4 0 3 1 0 2 2 1 3 0 3 4 2 0 4 1 1 2 4 1 4 0 3 1 0 2 2 2 4 1 4 0 3 1 0 2 2 0 2 4 2 3 1 4 3 0 0 3 0 2 1 1 4 2 1 3 3 4 1 3 1 2 0 3 2 4 4
output:
YYYYY
result:
ok "YYYYY"
Test #10:
score: 0
Accepted
time: 0ms
memory: 7620kb
input:
10 1 2 0 2 4 2 3 1 2 1 4 0 3 0 2 0 1 4 0 4 0 1 4 1 3 1 2 0 1 0 0 1 4 1 3 1 2 0 1 0 3 4 2 4 1 4 0 3 4 3 4 0 3 0 2 0 1 4 0 4 0 1 4 1 3 1 2 0 1 0 0 1 4 1 3 1 2 0 1 0 3 4 2 4 1 4 0 3 4 3 0 1 4 1 3 1 2 0 1 0
output:
NNNYN
result:
ok "NNNYN"
Test #11:
score: 0
Accepted
time: 0ms
memory: 8084kb
input:
10 1 4 1 2 1 3 3 2 1 2 0 3 0 1 0 2 2 1 0 1 0 4 0 3 0 2 2 1 0 1 1 4 1 2 1 3 3 2 1 2 4 2 4 0 4 1 1 0 4 0 1 1 1 4 1 0 3 2 1 2 0 0 0 1 0 2 2 1 0 1 2 0 2 3 2 4 4 3 2 3 2 0 2 3 2 4 4 3 2 3 2 0 2 3 2 4 4 3 2 3
output:
YYYYY
result:
ok "YYYYY"
Test #12:
score: 0
Accepted
time: 1ms
memory: 7780kb
input:
10 1 2 0 1 4 0 1 2 2 2 1 2 0 1 4 3 1 2 2 2 0 1 4 0 3 1 0 1 1 1 1 2 0 1 4 3 1 2 2 2 3 4 2 3 1 4 3 4 4 4 0 1 4 0 3 1 0 1 1 1 4 0 3 4 2 0 4 0 0 0 3 4 2 3 1 4 3 4 4 4 4 0 3 4 2 0 4 0 0 0 0 1 4 0 3 1 0 1 1 1
output:
YNYNY
result:
ok "YNYNY"
Test #13:
score: 0
Accepted
time: 1ms
memory: 8008kb
input:
10 1 3 0 0 2 1 3 4 3 3 3 3 0 0 4 1 3 4 3 3 1 1 3 3 2 4 1 2 1 1 2 4 1 1 3 2 4 0 4 4 4 1 3 3 0 4 1 2 1 1 2 4 1 1 3 2 4 0 4 4 0 2 4 4 1 0 2 3 2 2 3 0 2 2 4 3 0 1 0 0 3 0 2 2 4 3 0 1 0 0 4 2 4 4 1 0 2 3 2 2
output:
YYYNY
result:
ok "YYYNY"
Test #14:
score: 0
Accepted
time: 1ms
memory: 8060kb
input:
10 2 0 3 1 3 0 0 0 4 1 1 4 2 0 2 4 4 4 3 0 2 0 3 1 3 0 0 0 4 1 1 4 2 0 2 4 4 4 3 0 1 4 2 0 2 4 4 4 3 0 3 3 4 2 4 1 1 1 0 2 3 1 4 2 4 1 1 1 0 2 4 2 0 3 0 2 2 2 1 3 3 1 4 2 4 1 1 1 0 2 1 4 2 0 2 4 4 4 3 0
output:
YNYNN
result:
ok "YNYNN"
Test #15:
score: 0
Accepted
time: 37ms
memory: 18448kb
input:
1000 3 4 1 2 4 1 0 3 0 4 1 4 3 1 4 4 1 0 1 2 3 1 0 1 3 4 4 0 3 0 3 2 2 1 0 4 1 3 3 0 3 1 3 2 2 0 3 3 2 2 3 0 4 2 1 2 1 2 1 4 2 4 1 4 2 4 3 2 0 3 0 4 2 1 2 3 3 0 2 0 3 3 1 1 0 3 4 3 2 0 4 0 3 4 4 2 3 4 2 3 4 2 1 3 2 2 4 1 0 2 2 4 0 1 2 0 4 1 3 2 3 2 2 2 1 4 4 4 2 0 0 4 4 1 3 4 0 2 2 3 1 1 3 2 3 2 3 0...
output:
NNNYN
result:
ok "NNNYN"
Test #16:
score: 0
Accepted
time: 53ms
memory: 49664kb
input:
1000 2 3 0 1 0 0 0 1 1 4 1 4 2 3 0 3 4 2 3 2 4 2 1 1 1 1 0 0 3 3 2 0 2 2 2 4 3 0 3 3 3 0 1 3 0 2 0 1 0 0 0 3 1 4 3 1 4 0 3 4 4 1 3 3 4 0 1 4 2 3 0 1 0 0 2 3 1 4 0 0 2 1 2 3 3 4 4 3 3 2 0 0 4 3 2 3 3 2 4 0 2 2 3 0 3 2 4 1 0 2 4 2 4 1 2 1 3 0 3 3 0 1 1 0 2 3 0 2 4 1 4 3 4 1 2 2 2 4 0 1 3 3 0 0 1 3 2 4...
output:
NYYYY
result:
ok "NYYYY"
Test #17:
score: 0
Accepted
time: 32ms
memory: 33840kb
input:
1000 3 3 2 2 0 1 0 1 0 4 3 3 2 2 4 3 0 1 3 0 1 3 4 2 1 3 4 3 0 1 2 1 4 4 2 4 1 1 3 0 0 2 2 0 1 1 2 1 4 2 0 1 0 0 1 3 0 2 0 3 1 2 1 0 3 2 1 4 4 0 3 1 2 4 0 2 3 4 3 0 1 0 0 3 4 2 4 2 3 1 3 1 4 3 0 2 2 1 3 2 3 2 4 2 4 4 3 1 2 0 4 4 3 4 2 2 3 4 0 1 4 3 1 3 0 0 2 2 0 0 2 0 4 0 1 0 1 3 1 2 0 4 2 3 4 3 2 2...
output:
NNYYY
result:
ok "NNYYY"
Test #18:
score: 0
Accepted
time: 52ms
memory: 50268kb
input:
1000 2 3 0 0 0 4 2 0 4 1 4 2 4 3 2 0 1 2 3 1 1 4 0 0 1 3 0 0 4 4 4 2 4 4 3 2 2 4 1 1 4 0 3 4 4 2 2 4 1 2 2 1 0 2 2 0 2 0 1 0 2 0 0 2 0 0 3 2 3 1 3 2 4 2 2 1 0 2 4 4 2 3 2 4 2 2 3 0 4 3 3 0 3 2 2 2 1 2 2 4 1 2 4 1 1 2 0 2 4 4 0 4 0 3 1 3 1 0 0 4 0 1 1 1 0 3 0 2 1 2 3 4 3 1 3 3 3 4 2 2 1 3 2 4 0 3 2 1...
output:
NYYYY
result:
ok "NYYYY"
Test #19:
score: 0
Accepted
time: 33ms
memory: 33788kb
input:
1000 3 3 2 0 1 1 4 3 3 1 1 2 2 2 2 1 2 4 1 2 4 0 2 1 0 2 2 4 4 2 1 0 1 0 2 2 1 4 2 1 0 1 3 1 0 0 3 4 3 0 2 4 2 0 4 0 0 0 0 4 4 2 0 3 4 1 2 1 1 3 1 0 3 3 1 2 1 3 3 0 3 4 3 0 3 4 4 4 1 1 4 3 0 2 3 3 2 1 0 2 0 3 2 0 3 4 4 3 0 0 0 1 3 1 2 0 1 2 4 2 4 3 0 1 4 0 1 3 1 3 1 0 4 2 2 1 2 4 2 1 4 2 0 1 1 0 1 4...
output:
NYYYN
result:
ok "NYYYN"
Test #20:
score: 0
Accepted
time: 37ms
memory: 33812kb
input:
1000 1 1 4 3 1 2 1 0 0 0 0 3 1 3 0 2 3 4 4 2 2 3 2 4 3 0 0 0 3 4 3 0 4 1 4 3 0 2 3 3 1 4 1 4 2 2 3 1 4 4 3 1 1 1 4 0 0 1 3 2 3 2 4 2 0 1 3 3 0 1 4 4 2 3 2 4 2 0 3 4 0 3 4 0 4 2 0 3 4 2 4 1 1 3 0 4 0 1 0 2 3 0 1 0 3 4 0 4 4 2 2 2 3 0 3 0 3 1 4 1 4 0 0 1 1 1 4 0 1 4 0 2 1 4 3 3 2 0 2 3 4 0 4 1 3 3 3 2...
output:
NYYNN
result:
ok "NYYNN"
Test #21:
score: 0
Accepted
time: 36ms
memory: 32848kb
input:
1000 1 4 1 4 4 4 2 4 0 2 2 0 1 0 4 3 0 3 2 4 0 0 1 0 4 3 4 4 1 1 4 2 2 4 0 0 4 3 1 4 3 1 0 0 3 1 2 1 2 4 4 4 1 1 3 2 0 3 3 2 2 2 0 3 4 1 3 4 3 0 4 3 2 0 3 1 0 2 4 0 1 4 3 2 3 0 2 3 2 1 0 3 3 0 1 2 1 1 4 1 0 2 3 2 1 1 3 2 0 3 2 1 3 3 2 1 0 3 0 4 2 2 0 1 1 4 1 1 2 2 4 0 3 3 3 4 2 0 3 1 2 2 3 4 1 0 1 1...
output:
YYYYN
result:
ok "YYYYN"
Test #22:
score: 0
Accepted
time: 69ms
memory: 49900kb
input:
1000 4 1 0 0 1 1 4 1 0 2 1 3 1 0 3 0 1 4 3 4 2 4 0 4 1 3 2 0 3 4 3 3 2 3 1 2 4 0 4 1 2 3 3 4 4 1 2 4 0 3 4 0 0 2 4 1 0 0 1 4 1 2 1 0 1 0 2 4 4 4 1 3 1 4 3 4 2 3 4 2 0 1 3 1 2 2 2 4 0 1 0 2 0 2 4 3 0 1 0 4 1 2 2 2 2 1 4 3 2 3 3 3 1 0 4 1 0 4 0 1 2 4 0 3 3 2 4 0 4 2 3 4 2 1 0 4 2 0 4 3 2 4 3 2 3 4 3 1...
output:
YYYYY
result:
ok "YYYYY"
Test #23:
score: 0
Accepted
time: 42ms
memory: 33272kb
input:
1000 0 2 1 2 3 4 0 2 3 3 0 0 4 4 2 2 2 0 3 2 4 4 3 0 2 1 1 0 0 1 4 2 3 0 1 2 3 2 4 1 0 1 3 2 1 0 4 0 3 0 1 0 4 2 0 1 4 2 0 1 4 2 2 4 1 2 3 0 1 0 4 2 2 2 4 3 4 4 4 4 2 0 1 3 2 3 0 0 2 1 3 2 2 2 1 0 1 2 2 3 3 3 2 1 0 1 4 0 1 0 3 1 0 2 4 3 1 1 2 1 2 2 4 1 3 3 2 1 0 3 2 0 2 1 0 0 2 1 4 0 4 0 1 0 3 2 1 2...
output:
NYNYN
result:
ok "NYNYN"
Test #24:
score: 0
Accepted
time: 34ms
memory: 33744kb
input:
1000 2 4 1 3 0 3 3 2 1 1 1 2 0 3 3 3 4 3 3 2 2 4 0 4 0 2 4 2 0 0 4 4 2 1 4 0 4 0 0 3 2 3 3 1 4 2 3 0 4 0 4 1 2 3 2 3 2 4 0 2 3 4 0 3 0 4 0 1 1 4 3 3 4 4 2 0 0 3 0 2 3 4 3 4 2 3 1 1 1 4 1 1 4 1 3 1 1 4 0 2 4 1 4 1 0 0 3 2 1 4 1 0 0 2 0 2 4 1 0 3 0 2 1 0 1 0 0 0 1 3 0 1 1 4 3 4 3 3 0 2 4 2 0 4 2 1 2 0...
output:
YNYNY
result:
ok "YNYNY"
Test #25:
score: -100
Time Limit Exceeded
input:
1000 3 3 4 4 3 1 1 3 0 1 1 4 0 2 3 4 3 3 3 1 4 4 4 4 0 0 0 4 2 2 0 3 1 3 2 0 3 1 0 1 0 0 4 3 4 1 1 0 1 1 1 1 3 3 2 1 2 2 1 2 2 2 1 0 0 0 4 1 4 3 1 2 3 4 2 3 1 4 0 4 4 0 1 2 1 3 4 1 3 1 4 2 0 3 4 4 3 3 4 1 1 2 1 1 3 0 3 3 4 3 3 3 1 1 1 1 0 4 1 1 0 0 4 1 0 3 3 2 4 1 4 4 0 3 3 0 3 3 3 0 2 4 3 0 2 3 0 2...