Submission #1145758

#TimeUsernameProblemLanguageResultExecution timeMemory
1145758fatman87878Furniture (JOI20_furniture)C++20
0 / 100
1 ms1604 KiB
#include<bits/stdc++.h> using namespace std; #define IOS cin.tie(nullptr)->sync_with_stdio(0),cin.exceptions(cin.failbit); #define lb(x) (x)&-(x) #define all(x) (x).begin(),(x).end() #define ll long long constexpr int maxN=1e3+5; int n,m,q,cnt[maxN+maxN],c[maxN][maxN],deg[maxN][maxN],ged[maxN][maxN]; queue<pair<int,int>> qup,qdwn; inline bool chk(int x,int y){ if(x>n||x<1||y>m||y<1||c[x][y])return 0; return 1; } inline void push_up(){ for(int x,y;!qup.empty();){ tie(x,y) = qup.front(),qup.pop(); cnt[x+y]--; c[x][y] = 1; if(chk(x-1,y)&&!(--ged[x-1][y]))qup.emplace(x-1,y); if(chk(x,y-1)&&!(--ged[x][y-1]))qup.emplace(x,y-1); } } inline void push_down(){ for(int x,y;!qdwn.empty();){ tie(x,y) = qdwn.front(),qdwn.pop(); cnt[x+y]--; c[x][y] = 1; if(chk(x+1,y)&&!(--deg[x+1][y]))qdwn.emplace(x+1,y); if(chk(x,y+1)&&!(--deg[x][y+1]))qdwn.emplace(x,y+1); } } int main(){ IOS cin>>n>>m; for(int i = 1;i<=n;i++)for(int j = 1;j<=m;j++){ cin>>c[i][j],cnt[i+j]++; if(c[i][j])qup.emplace(i,j),qdwn.emplace(i,j); } for(int i = 1;i<=n;i++)for(int j = 1;j<=m;j++)if(!c[i][j])ged[i][j] = (i!=n)+(j!=m); for(int i = 1;i<=n;i++)for(int j = 1;j<=m;j++)if(!c[i][j])deg[i][j] = (i!=1)+(j!=1); push_up(); push_down(); cin>>q; for(int x,y;q--;){ cin>>x>>y; if(c[x][y]||cnt[x+y]>1){ if(!c[x][y]){ qup.emplace(x,y); qdwn.emplace(x,y); deg[x][y] = 0; ged[x][y] = 0; push_up(); push_down(); } cout<<"1\n"; } else cout<<"0\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...