Submission #1069619

#TimeUsernameProblemLanguageResultExecution timeMemory
1069619Faisal_SaqibSoccer Stadium (IOI23_soccer)C++17
6 / 100
256 ms63056 KiB
#include <bits/stdc++.h> using namespace std; #define ll int #define vll vector<ll> #define pb push_back int biggest_stadium(int n, std::vector<std::vector<int>> grid) { vector<pair<int,int>> trees; int row[n][n],col[n][n]; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { row[i][j]=col[i][j]=-1; if(grid[i][j]) trees.pb({i,j}); } row[i][n-1]=-1; for(int j=n-2;j>=0;j--) { if(grid[i][j]!=grid[i][j+1]) { row[i][j]=j+1; } else { row[i][j]=row[i][j+1]; } } } for(int j=0;j<n;j++) { col[n-1][j]=-1; for(int i=n-2;i>=0;i--) { if(grid[i][j]!=grid[i+1][j]) { col[i][j]=i+1; } else { col[i][j]=col[i+1][j]; } } } if(trees.size()==0) { return (n*n); } else if(trees.size()==1) { int x=trees[0].first; int y=trees[0].second; return (n*n)-min({(x+1)*(y+1),(n-x)*(y+1),(n-y)*(x+1),(n-y)*(n-x)}); } else { bool can=1; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(grid[i][j]==0) { if(row[i][j]!=-1 and col[i][row[i][j]]!=-1) { can=0; } if(col[i][j]!=-1 and row[col[i][j]][j]!=-1) { can=0; } if(row[i][j]!=-1 and row[i][row[i][j]]!=-1) { can=0; } if(col[i][j]!=-1 and col[col[i][j]][j]!=-1) { can=0; } } } } if(can) { return (n*n)-(int)trees.size(); } else { return min(1,(n*n)-(int)trees.size()); } } return 0; }
#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...