QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#512828 | #9170. Cycle Game | ucup-team055# | WA | 0ms | 3816kb | C++20 | 2.1kb | 2024-08-10 15:58:54 | 2024-08-10 15:58:54 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for (int i = (int)(a); i < (int)(b); i++)
using ll = long long;
#define all(p) p.begin(), p.end()
struct UF{
int n;
vector<int> par;
UF(int n_):n(n_){
par.resize(n, -1);
}
int root(int a){
if (par[a] < 0) return a;
return par[a] = root(par[a]);
}
int unite(int a, int b){
a = root(a);
b = root(b);
if (a == b) return 0;
if (par[a] > par[b]) swap(a, b);
par[a] += par[b];
par[b] = a;
return 1;
}
};
void solve(){
int N, M, K;
cin >> N >> M >> K;
UF T((N + 1) * (M + 1));
int S = 0, I = 0, B = 0, C = 0;
vector seen(N + 2, vector<int>(M + 2));
vector<int> dx = {0, 0, 1, -1, 1, 1, -1, -1}, dy = {1, -1, 0, 0, 1, -1, 1, -1};
rep(i, 0, K){
int x, y;
cin >> x >> y;
set<int> s;
rep(k, 0, 4){
int a = dx[k] + x, b = dy[k] + y;
if (a < 0 || b < 0 || a > N || b > M) continue;
if (seen[a][b] == 0) continue;
s.insert(T.root(a * (M + 1) + b));
}
int nS = S + 1;
int nC = C + 1 - s.size();
int nB = B;
int nI = I;
rep(k, 4, 8){
if (seen[x + dx[k]][y] == 0 && seen[x][y + dy[k]] == 0) nB += 1;
if (seen[x + dx[k]][y] == 1 && seen[x][y + dy[k]] == 1){
nB -= 1;
if (seen[x + dx[k]][y + dy[k]]){
nI += 1;
}
}
}
if (nS == nI + nB / 2 - nC){
seen[x][y] = 1;
S = nS, I = nI, B = nB, C = nC;
for (auto z : s) T.unite(z, x * (M + 1) + y);
cout << "1";
}
else{
cout << "0";
}
}
cout << "\n";
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
// cin >> t;
while (t--) solve();
}
/*
4 3 7
2 1
2 2
2 3
3 1
3 2
4 1
4 2
3 3 8
1 1
1 2
1 3
2 3
3 3
3 2
3 1
2 1
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3616kb
input:
4 3 7 2 1 2 2 2 3 3 1 3 2 4 1 4 2
output:
1111111
result:
ok "1111111"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3816kb
input:
3 3 8 1 1 1 2 1 3 2 3 3 3 3 2 3 1 2 1
output:
11111110
result:
ok "11111110"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3548kb
input:
10 10 7 9 1 6 6 3 8 8 7 5 10 1 7 1 2
output:
1111111
result:
ok "1111111"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3532kb
input:
9 10 50 1 9 1 6 2 3 3 1 7 4 9 4 1 3 2 5 9 2 7 9 5 6 8 10 9 5 5 5 4 10 9 7 5 9 3 2 4 5 1 1 4 7 3 6 2 8 4 3 8 6 5 10 4 8 5 4 7 2 9 6 4 2 7 8 5 2 3 5 9 1 6 1 1 5 9 9 5 8 6 3 8 8 8 4 7 7 7 1 3 7 2 2 3 10 6 9 8 3 7 6
output:
11111111111111111111111111111111111111111111111111
result:
ok "11111111111111111111111111111111111111111111111111"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3540kb
input:
3 5 11 1 5 2 4 1 2 1 3 3 3 3 1 3 4 2 3 1 4 2 1 2 5
output:
11111111111
result:
ok "11111111111"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3604kb
input:
7 9 12 7 3 2 3 6 2 2 2 4 2 2 8 5 7 4 4 6 8 2 7 7 2 1 9
output:
111111111111
result:
ok "111111111111"
Test #7:
score: 0
Accepted
time: 0ms
memory: 3816kb
input:
1 4 1 1 2
output:
1
result:
ok "1"
Test #8:
score: -100
Wrong Answer
time: 0ms
memory: 3600kb
input:
9 8 67 5 5 8 3 9 5 7 4 5 1 9 3 4 2 2 5 1 7 7 8 7 2 8 5 6 1 8 8 4 4 5 4 1 5 3 4 6 7 2 3 3 7 5 7 2 4 2 7 1 3 7 3 2 8 6 6 6 2 6 3 7 5 9 6 7 6 3 6 1 1 6 4 3 1 5 3 8 7 2 1 4 1 8 4 8 6 3 5 5 8 1 6 1 2 4 6 9 4 1 4 3 3 4 8 8 1 4 7 9 8 3 8 6 5 6 8 3 2 2 2 7 1 9 2 4 3 1 8 4 5 8 2 7 7
output:
1111111111111111111111111111111111111111111110011111101010001101111
result:
wrong answer 1st words differ - expected: '111111111111111111111111111111...1111111110010101101000101101101', found: '111111111111111111111111111111...1111111110011111101010001101111'