Submission #1221635

#TimeUsernameProblemLanguageResultExecution timeMemory
1221635mayacT-Covering (eJOI19_covering)C++20
0 / 100
4 ms328 KiB
#include <iostream> #include <vector> #include <queue> using namespace std; using ll=long long; int main(){ int n,m,ans=0,k,a,b,cur; cin>>n>>m; vector<vector<int>> v(n,vector<int>(m)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>v[i][j]; } } cin>>k; bool flag=1; vector<vector<int>> g(k); vector<pair<int,int>> p(k); for(int i=0;i<k;i++){ cin>>a>>b; p[i]={a,b}; for(int j=0;j<i;j++){ if(abs(a-p[j].first)==0||abs(b-p[j].second)==0){ g[i].push_back(j); g[j].push_back(i); } } } for(int i=0;i<k;i++){ a=p[i].first;b=p[i].second; cur=0; if(g[i].size()==0){ if((a==0&&b==0)||(a==n-1&&b==m-1))flag=0; if(a>0&&a<n-1){ if(b<m-1)cur=max(cur,v[a-1][b]+v[a][b]+v[a+1][b]+v[a][b+1]); if(b>0)cur=max(cur,v[a-1][b]+v[a][b]+v[a+1][b]+v[a][b-1]); } if(b>0&&b<m-1){ if(a<n-1)cur=max(cur,v[a][b]+v[a][b-1]+v[a][b+1]+v[a+1][b]); if(a>0)cur=max(cur,v[a][b]+v[a][b-1]+v[a][b+1]+v[a-1][b]); }} else{ if(g[i].size()>1)flag=0; else{ if(p[g[i][0]].first-a==1){ if(a>0&&b>0&&b<m-1){ cur=v[a][b]+v[a][b+1]+v[a][b-1]+v[a-1][b]; }else{ flag=0; } } if(p[g[i][0]].first-a==-1){ if(a<n-1&&b>0&&b<m-1){ cur=v[a][b]+v[a][b+1]+v[a][b-1]+v[a+1][b]; }else{ flag=0; } } if(p[g[i][0]].second-b==1){ if(b>0&&a>0&&a<n-1){ cur=v[a][b]+v[a+1][b]+v[a+1][b]+v[a][b-1]; }else{ flag=0; } } if(p[g[i][0]].second-b==-1){ if(b<m-1&&a>0&&a<n-1){ cur=v[a][b]+v[a+1][b]+v[a+1][b]+v[a][b+1]; }else{ flag=0; } } } } ans+=cur; } if(flag)cout<<ans<<"\n"; else cout<<"NO\n"; }
#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...