#include <bits/stdc++.h>
using namespace std;
int res(vector<vector<bool>> t, int n, int m){
bool tak = 1;
int ret = 0;
while(tak){
tak = 0;
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= m; ++j){
if(!t[i][j]) continue;
if(!t[i - 1][j] && !t[i + 1][j]){
t[i][j] = 0; tak = 1;
ret++;
}
else if(!t[i][j - 1] && !t[i][j + 1]){
t[i][j] = 0; tak = 1;
ret++;
}
}
}
}
return ret;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, m;
cin >> n >> m;
int k, q;
cin >> k >> q;
vector<vector<bool>> v(n + 2);
for(int i = 0; i <= n + 1; ++i) v[i].resize(m + 2, false);
int x, y;
for(int i = 0; i < k; ++i){
cin >> x >> y;
v[x][y] = 1;
}
cout << res(v, n, m) << "\n";
for(int i = 0; i < q; ++i){
cin >> x >> y;
if(v[x][y]) v[x][y] = 0;
else v[x][y] = 1;
cout << res(v, n, m) << "\n";
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #include <bits/stdc++.h> using namespace std; int res(vector<vector<bool>> t, int n, int m){ bool tak = 1; int ret = 0; while(tak){ tak = 0; for(int i = 1; i <= n; ++i){ for(int j = 1; j <= m; ++j){ if(!t[i][j]) continue; if(!t[i - 1][j] && !t[i + 1][j]){ t[i][j] = 0; tak = 1; ret++; } else if(!t[i][j - 1] && !t[i][j + 1]){ t[i][j] = 0; tak = 1; ret++; } } } } return ret; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; int k, q; cin >> k >> q; vector<vector<bool>> v(n + 2); for(int i = 0; i <= n + 1; ++i) v[i].resize(m + 2, false); int x, y; for(int i = 0; i < k; ++i){ cin >> x >> y; v[x][y] = 1; } cout << res(v, n, m) << "\n"; for(int i = 0; i < q; ++i){ cin >> x >> y; if(v[x][y]) v[x][y] = 0; else v[x][y] = 1; cout << res(v, n, m) << "\n"; } return 0; } |
English