Submission #683910

#TimeUsernameProblemLanguageResultExecution timeMemory
683910victor_gaoFurniture (JOI20_furniture)C++17
5 / 100
5061 ms24220 KiB
#pragma GCC optimize("Ofast,unroll-loops,O3") #pragma GCC optimize("avx,avx2,sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,fma,tune=native") #include<bits/stdc++.h> //#include<bits/extc++.h> //#pragma pack(1) #define fast ios::sync_with_stdio(0); cin.tie(0); #define pii pair<int,int> #define x first #define y second #define N 1015 using namespace std; //using namespace __gnu_pbds; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); //typedef tree<int, null_type,less_equal<int>, rb_tree_tag,tree_order_statistics_node_update> order_multiset; //typedef tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> order_set; int g[2*N]; int n,m,arr[N][N],in[N][N],out[N][N]; bool vis[N][N]; bool check(int x,int y){ arr[x][y]=1; if (vis[x][y]) return 1; vector<pii>path; queue<pii>q; q.push({x,y}); vis[x][y]=1; bool ok=1; while (!q.empty()){ pii np=q.front(); q.pop(); g[np.x+np.y]--; if (g[np.x+np.y]==0) ok=0; path.push_back(np); if (np.x+1<=n&&!vis[np.x+1][np.y]){ in[np.x+1][np.y]--; if (!in[np.x+1][np.y]){ q.push({np.x+1,np.y}); vis[np.x+1][np.y]=1; } } if (np.y+1<=m&&!vis[np.x][np.y+1]){ in[np.x][np.y+1]--; if (!in[np.x][np.y+1]){ q.push({np.x,np.y+1}); vis[np.x][np.y+1]=1; } } } if (ok) return ok; else { arr[x][y]=0; for (auto i:path){ vis[i.x][i.y]=0; g[i.x+i.y]++; } for (auto [i,j]:path){ if (j+1<=m&&arr[i][j+1]==0&&!vis[i][j+1]) in[i][j+1]++; if (i+1<=n&&arr[i+1][j]==0&&!vis[i+1][j]) in[i+1][j]++; } return 0; } } signed main(){ fast cin>>n>>m; for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++){ cin>>arr[i][j]; g[i+j]++; } } for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++){ if (j+1<=m) in[i][j+1]++; if (i+1<=n) in[i+1][j]++; } } for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++){ if (arr[i][j]) check(i,j); } } int q; cin>>q; while (q--){ int x,y; cin>>x>>y; /* for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++){ cout<<vis[i][j]; } cout<<'\n'; } cout<<'\n'; for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++){ cout<<in[i][j]<<" "; } cout<<'\n'; } cout<<'\n'; */ int ans=check(x,y); cout<<ans<<'\n'; } }

Compilation message (stderr)

furniture.cpp:2:88: warning: bad option '-favx' to pragma 'optimize' [-Wpragmas]
    2 | #pragma GCC optimize("avx,avx2,sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,fma,tune=native")
      |                                                                                        ^
furniture.cpp:2:88: warning: bad option '-favx2' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fsse' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fsse2' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fsse3' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fssse3' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fsse4' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fpopcnt' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fabm' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fmmx' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-ffma' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-ftune=native' to pragma 'optimize' [-Wpragmas]
furniture.cpp:19:23: warning: bad option '-favx' to attribute 'optimize' [-Wattributes]
   19 | bool check(int x,int y){
      |                       ^
furniture.cpp:19:23: warning: bad option '-favx2' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fsse' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fsse2' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fsse3' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fssse3' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fsse4' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fpopcnt' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fabm' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fmmx' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-ffma' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-ftune=native' to attribute 'optimize' [-Wattributes]
furniture.cpp:62:13: warning: bad option '-favx' to attribute 'optimize' [-Wattributes]
   62 | signed main(){
      |             ^
furniture.cpp:62:13: warning: bad option '-favx2' to attribute 'optimize' [-Wattributes]
furniture.cpp:62:13: warning: bad option '-fsse' to attribute 'optimize' [-Wattributes]
furniture.cpp:62:13: warning: bad option '-fsse2' to attribute 'optimize' [-Wattributes]
furniture.cpp:62:13: warning: bad option '-fsse3' to attribute 'optimize' [-Wattributes]
furniture.cpp:62:13: warning: bad option '-fssse3' to attribute 'optimize' [-Wattributes]
furniture.cpp:62:13: warning: bad option '-fsse4' to attribute 'optimize' [-Wattributes]
furniture.cpp:62:13: warning: bad option '-fpopcnt' to attribute 'optimize' [-Wattributes]
furniture.cpp:62:13: warning: bad option '-fabm' to attribute 'optimize' [-Wattributes]
furniture.cpp:62:13: warning: bad option '-fmmx' to attribute 'optimize' [-Wattributes]
furniture.cpp:62:13: warning: bad option '-ffma' to attribute 'optimize' [-Wattributes]
furniture.cpp:62:13: warning: bad option '-ftune=native' to attribute 'optimize' [-Wattributes]
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...