Submission #1255427

#TimeUsernameProblemLanguageResultExecution timeMemory
1255427damoonFurniture (JOI20_furniture)C++20
100 / 100
1066 ms4364 KiB
#include<bits/stdc++.h>
using namespace std;

typedef pair<int,int> pii;
#define f first
#define s second

#define pb push_back
#define pp pop_back

string pr(int* vv,int l,int r){for(int i=l;i<r;i++)cout<<vv[i]<<" ";return"";}

const int L=1000+10;
int n,m,q;
bool ok[L][L],a[L][L];
int cnt[L*2];

void add(int x,int y){
    if(!ok[x][y])
        return;
    cnt[x+y-1]--;
    ok[x][y] = 0;
    if(ok[x+1][y] and !ok[x+1][y-1])
        add(x+1,y);
    if(ok[x][y+1] and !ok[x-1][y+1])
        add(x,y+1);
    if(ok[x-1][y] and !ok[x-1][y+1])
        add(x-1,y);
    if(ok[x][y-1] and !ok[x+1][y-1])
        add(x,y-1);
}

void prr(){
    cout<<"cnt: "<<pr(cnt,1,n+m)<<endl;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cout<<ok[i][j];
        }
        cout<<endl;
    }
    cout<<"----------------"<<endl;
}

int main(){
    //ifstream cin ("in.in");
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            ok[i][j] = 1;
            cnt[i+j-1]++;
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
            if(a[i][j]){
                add(i,j);
            }
        }
    }

    cin>>q;
    for(int tt=1;tt<=q;tt++){
        int x,y;
        cin>>x>>y;
        int ans = 0;
        if(cnt[x+y-1] != 1 or !ok[x][y]){
            ans = 1;
            add(x,y);
        }
        cout<<ans<<'\n';
        //prr();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...