Submission #593326

#TimeUsernameProblemLanguageResultExecution timeMemory
593326CSQ31Mars (APIO22_mars)C++17
29 / 100
110 ms2832 KiB
#include "mars.h" #include <bits/stdc++.h> using namespace std; #define pb push_back #define fi first #define se second #define sz(a) (int)(a.size()) #define all(a) a.begin(),a.end() #define lb lower_bound #define ub upper_bound #define owo ios_base::sync_with_stdio(0);cin.tie(0); #define INF (int)(1e9+1) #define debug(...) fprintf(stderr, __VA_ARGS__),fflush(stderr) #define time__(d) for(long blockTime = 0; (blockTime == 0 ? (blockTime=clock()) != 0 : false);\ debug("%s time : %.4fs\n", d, (double)(clock() - blockTime) / CLOCKS_PER_SEC)) typedef long long int ll; typedef long double ld; typedef pair<ll,ll> PII; typedef pair<int,int> pii; typedef vector<vector<int>> vii; typedef vector<vector<ll>> VII; ll gcd(ll a,ll b){if(!b)return a;else return gcd(b,a%b);} //at phase 4 we make everything a map of 10x10 //phase 5 shift diagonal //phase 6 //phase 7 //phase 8 //phase 9 //phase 10 int iii; string process(vector <vector<string>> a, int I, int J, int k, int n) { iii=J; string ans(100,'0'); if(k!=n-1){ if(k<4){ //make 10 x 10 int s = 2*k+1; int f = 2*k+3; vii g(40,vector<int>(40)); for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ for(int k=0;k<s*s;k++){ g[k/s+i][k%s+j] = a[i][j][k] - '0'; } } } for(int k=0;k<f*f;k++)ans[k] = '0' + g[k/f][k%f]; }else{ ans = a[0][0]; if(!I && !J)ans = a[0][0]; else if(I==J){ if(k>=7 && I==1)ans = a[0][0]; else ans = a[2][2]; } else if(!I){ if(k>=7 && J==1)ans = a[0][0]; else ans = a[0][2]; } else if(!J){ if(k>=7 && I==1)ans = a[0][0]; else ans = a[2][0]; } else if(n==10){ if(I==7 && J==5)ans = a[2][2]; if(I==5 && J==3)ans = a[2][2]; if(I==4 && J==3)ans = a[1][0]; if(I==2 && J==1)ans = a[2][1]; if(I==5 && J==7)ans = a[2][2]; if(I==3 && J==5)ans = a[2][2]; if(I==3 && J==4)ans = a[1][0]; if(I==1 && J==2)ans = a[1][2]; } } } if(k == n-1){ vii g(40,vector<int>(40,0)); if(n<=5){ int s = 2*n-1; for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ for(int k=0;k<s*s;k++){ g[k/s+i][k%s+j] = a[i][j][k] - '0'; } } } } else if(n<=8){ int s = 9; int sh = (n-5)*2; for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ for(int k=0;k<s*s;k++){ int ii = i+sh; int jj = j+sh; if(!i && !j)g[k/s][k%s] = a[i][j][k] - '0'; else if(i==j)g[k/s + ii][k%s + jj] = a[i][j][k] - '0'; else if(!i)g[k/s][k%s + jj] = a[i][j][k] - '0'; else if(!j)g[k/s + ii][k%s] = a[i][j][k] - '0'; else if(n==10){ } } } } } else if(n<=10){ int s = 9; int sh = (n-5)*2; for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ for(int k=0;k<s*s;k++){ int ii = i+sh; int jj = j+sh; if(!i && !j)g[k/s][k%s] = a[i][j][k] - '0'; else if(i==j){ if(i==2)g[k/s + ii][k%s + jj] = a[i][j][k] - '0'; if(i==1)g[k/s + ii-4][k%s + jj-4] = a[i][j][k] - '0'; } else if(!i){ if(j==2)g[k/s][k%s + jj] = a[i][j][k] - '0'; if(j==1)g[k/s][k%s + jj-4] = a[i][j][k] - '0'; } else if(!j){ if(i==2)g[k/s + ii][k%s] = a[i][j][k] - '0'; if(i==1)g[k/s + ii-4][k%s] = a[i][j][k] - '0'; }else if(j==1){ g[k/s+11][k%s+9] = a[i][j][k] - '0'; }else if(i==1){ g[k/s+9][k%s+11] = a[i][j][k] - '0'; } } } } } n = 2*n+1; bool debug = 0; if(debug){ cout<<'\n'; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cout<<g[i][j]<<" "; } cout<<'\n'; } } int dx[4] = {0,0,1,-1}; int dy[4] = {1,-1,0,0}; int res = 0; vector<vector<bool>>vis(n,vector<bool>(n,0)); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(!vis[i][j] && g[i][j]){ queue<pii>q; q.push({i,j}); while(!q.empty()){ int x = q.front().fi; int y = q.front().se; vis[x][y] = 1; q.pop(); //cout<<x<<" "<<y<<'\n'; for(int k=0;k<4;k++){ int xn = x+dx[k]; int yn = y+dy[k]; if(xn>=0 && yn>=0 && xn<n && yn<n && g[xn][yn] && !vis[xn][yn]){ q.push({xn,yn}); vis[xn][yn] = 1; } } } res++; } } } for(int i=0;i<30;i++)if(res&(1<<i))ans[i] = '1'; } 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...