Submission #1285747

#TimeUsernameProblemLanguageResultExecution timeMemory
1285747MMihalevSoccer Stadium (IOI23_soccer)C++20
3.50 / 100
183 ms47396 KiB
#include<iostream> #include<vector> #include<algorithm> #include<tuple> #include<queue> #include "soccer.h" using namespace std; const int MAX_N=2e3+3; int a[MAX_N][MAX_N]; int n; vector<pair<int,int>>intervals; bool inside(int i,int j) { if(intervals[j].first<=intervals[i].first && intervals[j].second>=intervals[i].second)return 1; return 0; } bool check() { bool hasprev=0,haslast=0; for(int i=0;i<n;i++) { int f=-1,s=-2; for(int j=0;j<n;j++) { if(a[i][j]==0) { if(f==-1)f=j; s=j; } } for(int j=f;j<=s;j++) { if(a[i][j])return 0; } bool hasnow=(f!=-1); if(hasnow) { intervals.push_back({f,s}); if(haslast==0 && hasprev)return 0; } haslast=hasnow; hasprev=max(hasprev,hasnow); } for(int i=1;i<intervals.size();i++) { if(inside(i-1,i))continue; for(int j=0;j<i;j++) { if(inside(i,j) or inside(j,i))continue; return 0; } for(int j=i+1;j<intervals.size();j++) { if(inside(j,i))continue; return 0; } break; } return 1; } int biggest_stadium(int N, std::vector<std::vector<int>> F) { n=N; int empsz=0; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { a[i][j]=F[i][j]; if(a[i][j]==0)empsz++; } } if(check())return empsz; return -1; }
#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...