Submission #957661

#TimeUsernameProblemLanguageResultExecution timeMemory
957661vjudge1Mars (APIO22_mars)C++17
21 / 100
28 ms4552 KiB
#include <bits/stdc++.h> #define f first #define s second #define ent '\n' //#define int long long #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #pragma GCC optimize("Ofast,unroll-loops,fast-math,O3") const int dx[]={-1, 1, 0, 0, 0}; const int dy[]={0, 0, 1, -1, 0}; typedef long long ll; using namespace std; const int mx=1e6+12; const int mod=998244353; const bool T=1; int used[200][200]; int pos(int x,int y,int n){ return x*n+y; } void dfs(int x,int y,int n){ used[x][y]=1; for(int i=0;i<4;i++){ int x1=dx[i]+x, y1=dy[i]+y; if(min(x1, y1)>=0 && max(x1, y1)<n && !used[x1][y1]){ dfs(x1, y1, n); } } } std::string process(std::vector<std::vector<std::string> > a,int x,int y,int k,int n){ k++; if(k==5){ string ans=""; while(ans.size()<100){ ans+='0'; } for(int i=x;i<x+2*k+1;i++){ for(int j=y;j<y+2*k+1;j++){ int lx=min(i, x+2), rx=min(j, y+2); used[i][j]=(a[lx-x][rx-y][pos(i-lx, j-rx, 2*k-1)] == '1'); } } if(k==n){ for(int i=0;i<2*n+1;i++){ for(int j=0;j<2*n+1;j++){ used[i][j]=1-used[i][j]; } } int cnt=0; for(int i=0;i<2*n+1;i++){ for(int j=0;j<2*n+1;j++){ if(!used[i][j]){ cnt++; dfs(i, j, 2*n+1); } } } for(int i=0;i<100;i++){ if(i>=20){ ans[i]='0'; } else{ if((cnt&(1<<i))){ ans[i]='1'; } else{ ans[i]='0'; } } } return ans; } int lx = x, ly = y, rx = x + 9, ry = y+9; if(x==2){ lx++, rx++; } if(y==2){ ly++, ry++; } int pos=0; for(int i=lx;i<=rx;i++){ for(int j=ly;j<=ry;j++){ ans[pos]=used[i][j] + '0'; pos++; } } return ans; } string ans=""; while(ans.size()<100){ ans+='0'; } if(k<5){ for(int i=x;i<x+2*k+1;i++){ for(int j=y;j<y+2*k+1;j++){ int lx=min(i, x+2), rx=min(j, y+2); ans[pos(i-x, j-y, 2*k+1)]=a[lx-x][rx-y][pos(i-lx, j-rx, 2*k-1)]; } } } if(k==n){ if(k==6){ int pos=0; for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ used[i][j]=(a[0][0][pos] == '0'); pos++; } } pos=0; for(int i=3;i<13;i++){ for(int j=0;j<10;j++){ used[i][j]=(a[2][0][pos] == '0'); pos++; } } pos=0; for(int i=3;i<13;i++){ for(int j=3;j<13;j++){ used[i][j]=(a[2][2][pos] == '0'); pos++; } } pos=0; for(int i=0;i<10;i++){ for(int j=3;j<13;j++){ used[i][j]=(a[0][2][pos] == '0'); pos++; } } } else{ for(int i=0;i<2*n+1;i++){ for(int j=0;j<2*n+1;j++){ used[i][j]=(ans[pos(i, j, 2*n+1)] == '0'); } } } int cnt=0; for(int i=0;i<2*n+1;i++){ for(int j=0;j<2*n+1;j++){ if(!used[i][j]){ cnt++; dfs(i, j, 2*n+1); } } } for(int i=0;i<100;i++){ if(i>=20){ ans[i]='0'; } else{ if((cnt&(1<<i))){ ans[i]='1'; } else{ ans[i]='0'; } } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...