Submission #1348388

#TimeUsernameProblemLanguageResultExecution timeMemory
1348388NewtonabcFurniture (JOI20_furniture)C++20
100 / 100
789 ms10428 KiB
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll MOD=1e9+7;
const int N=1e3+10;
int a[N][N],b[N][N],s[2010],l[2010];
int n,m;
void upd(int x,int y){
    if(b[x][y]) return;
    b[x][y]=1;
    s[x+y]++;
    if((x-1>=1 && y+1<=m && b[x-1][y+1]) || x-1<1 || y+1>m){
        if(y+1<=m && !b[x][y+1]) upd(x,y+1);
        if(x-1>=1 && !b[x-1][y]) upd(x-1,y);
    }
    if((x+1<=n && y-1>=1 && b[x+1][y-1]) || x+1>n || y-1<1){
        if(x+1<=n && !b[x+1][y]) upd(x+1,y);
        if(y-1>=1 && !b[x][y-1]) upd(x,y-1); 
    }
}
int main(){
    cin>>n >>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
            if(a[i][j]) upd(i,j);
            l[i+j]++;
        }
    }
    int q; cin>>q;
    while(q--){
        int x,y; cin>>x >>y;
        if(s[x+y]!=l[x+y]-1 || b[x][y]) upd(x,y),cout<<1 <<"\n";
        else cout<<0 <<"\n";
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...