Submission #1059878

#TimeUsernameProblemLanguageResultExecution timeMemory
1059878noyancanturkSoccer Stadium (IOI23_soccer)C++17
25 / 100
946 ms95680 KiB
#include "soccer.h" #include<bits/stdc++.h> using namespace std; const int lim=2000; int n; int rowok[lim][lim],colok[lim][lim]; bitset<lim>row[lim],col[lim]; int biggest_stadium(int N, std::vector<std::vector<int>> F) { n=N; int ans=n*n; for(int i=0;i<n;i++){ int ok=1; for(int j=0;j<n;j++){ if(!F[i][j])ok=0; rowok[i][j]|=ok; } ok=1; for(int j=n-1;0<=j;j--){ if(!F[i][j])ok=0; rowok[i][j]|=ok; }ok=1; for(int j=0;j<n;j++){ if(!F[j][i])ok=0; colok[j][i]|=ok; } ok=1; for(int j=n-1;0<=j;j--){ if(!F[j][i])ok=0; colok[j][i]|=ok; } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if((!colok[i][j]||!rowok[i][j])&&F[i][j]){ cerr<<i<<" "<<j<<"\n"; return 0; } ans-=F[i][j]; } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ row[i][j]=F[i][j]; col[i][j]=F[j][i]; } } int rw[n][n]{},cl[n][n]{}; for(int i=0;i<n;i++){ row[i]=row[i].flip(); col[i]=col[i].flip(); for(int j=0;j<n;j++){ rw[i][j]=(row[i]|row[j]).count()-(lim-n); cl[i][j]=(col[i]|col[j]).count()-(lim-n); } row[i]=row[i].flip(); col[i]=col[i].flip(); } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(i==j)continue; //cerr<<i<<" "<<j<<" :: "<<rw[i][j]<<" "<<rw[j][i]<<"\n"; if(rw[i][j]<n&&rw[j][i]<n)return 0; if(cl[i][j]<n&&cl[j][i]<n)return 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...