Submission #296920

#TimeUsernameProblemLanguageResultExecution timeMemory
296920nafis_shifatFurniture (JOI20_furniture)C++14
100 / 100
550 ms19748 KiB
#include<bits/stdc++.h> #define ll long long #define pii pair<int,int> using namespace std; const int mxn=1e5+5; const int inf=1e9; int a[1002][1002]={}; int cnt[3000]={}; int di[]={0,0,-1,1}; int dj[]={-1,1,0,0}; bool f=false; int n,m; vector<pii> v; void dfs(int i,int j) { if(a[i][j]) return; int v1=a[i][j+1]+a[i+1][j]; int v2=a[i-1][j]+a[i][j-1]; if(v1!=2 && v2!=2) return; a[i][j]=1; cnt[i+j]--; v.push_back({i,j}); if(i==1 && j==1) { a[i][j]=0; if(v1==2) { f=true; } return; } if(i==n && j==m) { a[i][j]=0; if(v2==2) { f=true; } return; } for(int k=0;k<4;k++) { int ii=i+di[k]; int jj=j+dj[k]; dfs(ii,jj); } } int main() { cin>>n>>m; for(int i=0;i<=m+1;i++) { a[0][i]=1; a[n+1][i]=1; } for(int i=0;i<=n+1;i++) { a[i][0]=a[i][m+1]=1; } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cnt[i+j]++; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { int x; scanf("%d",&x); if(!x) continue; a[i][j]=x; for(int k=0;k<4;k++) { int ii=i+di[k]; int jj=j+dj[k]; dfs(ii,jj); } } } int q; cin>>q; while(q--) { v.clear(); int i,j; scanf("%d%d",&i,&j); if(a[i][j]==1) { printf("1\n"); continue; } if(cnt[i+j]==1) { printf("0\n"); continue; } f=false; a[i][j]=1; cnt[i+j]--; for(int k=0;k<4;k++) { int ii=i+di[k]; int jj=j+dj[k]; dfs(ii,jj); } if(f) { printf("0\n"); a[i][j]=0; cnt[i+j]++; for(pii x:v) { a[x.first][x.second]=0; cnt[x.first+x.second]++; } } else { printf("1\n"); } } }

Compilation message (stderr)

furniture.cpp: In function 'int main()':
furniture.cpp:75:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   75 |    scanf("%d",&x);
      |    ~~~~~^~~~~~~~~
furniture.cpp:95:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   95 |   scanf("%d%d",&i,&j);
      |   ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...