Submission #849689

#TimeUsernameProblemLanguageResultExecution timeMemory
849689AbitoFurniture (JOI20_furniture)C++17
0 / 100
3 ms10072 KiB
#include <bits/stdc++.h> #define F first #define S second #define pb push_back #define ppb pop_back #define ep insert #define endl '\n' #define elif else if #define pow pwr #define sqrt sqrtt #define int long long #define y1 YONE typedef unsigned long long ull; using namespace std; const int N=1005; int n,m,q,a[N][N]; bool b[N][N],vis[N][N]; int rec(int x,int y){ if (x==n && y==m) return a[x][y]=1; if (x>n || x<1 || y>m || y<1 || b[x][y]) return a[x][y]=INT_MAX; if (vis[x][y]) return a[x][y]; vis[x][y]=true; return a[x][y]=bool(rec(x+1,y)<INT_MAX && rec(x+1,y)>0)+bool(rec(x,y+1)<INT_MAX && rec(x,y+1)>0); } int32_t main(){ ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); for (int i=0;i<N;i++) for (int j=0;j<N;j++) a[i][j]=INT_MAX; cin>>n>>m; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) cin>>b[i][j]; rec(1,1); for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) if (!b[i][j] && a[i][j]>=INT_MAX) a[i][j]=0; /*for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++) cout<<a[i][j]<<' '; cout<<endl; }*/ cin>>q; while (q--){ int x,y;cin>>x>>y; if (!a[x][y]){ cout<<1<<endl; a[x][y]=INT_MAX; b[x][y]=1; continue; } if (min(a[x-1][y],a[x][y-1])==1){ cout<<0<<endl; continue; }cout<<1<<endl; a[x][y]=INT_MAX; b[x][y]=1; a[x-1][y]--; a[x][y-1]--; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...