Submission #849692

#TimeUsernameProblemLanguageResultExecution timeMemory
849692AbitoFurniture (JOI20_furniture)C++17
0 / 100
5047 ms348 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=105; 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); } void dfs(int x,int y){ vis[x][y]=true; if (x<n && !b[x+1][y]) dfs(x+1,y); if (y<m && !b[x][y+1]) dfs(x,y+1); return; } 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; b[x][y]=true; memset(vis,0,sizeof(vis)); dfs(1,1); if (!vis[n][m]) b[x][y]=0; cout<<b[x][y]<<endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...