Submission #1281060

#TimeUsernameProblemLanguageResultExecution timeMemory
1281060silence25T-Covering (eJOI19_covering)C++20
100 / 100
255 ms60612 KiB
#include "bits/stdc++.h" #define ll long long #define pb push_back #define ff first #define ss second #define all(v) v.begin(),v.end() #define rall(v) v.rbegin(),v.rend() using namespace std; const long long maxn = 2e6+5; const long long px[4]={0,0,-1,1}; const long long py[4]={1,-1,0,0}; long long n,m; long long cnt; long long a[maxn]; bool b[maxn]; bool vis[maxn]; vector<long long>g[maxn]; vector<long long>v; void merge(long long i1,long long j1,long long i2,long long j2){ if(i2 > n || j2 > m || !i2 || !j2) return; long long pos1 = i1*m + j1; long long pos2 = i2*m + j2; g[pos1].pb(pos2); g[pos2].pb(pos1); return; } void dfs(long long pos){ vis[pos] = true; if(b[pos]) ++ cnt; else v.pb(a[pos]); for(auto it:g[pos]){ if(vis[it]) continue; else dfs(it); } return; } void solve(){ cin>>n>>m; for(long long i = 1;i<=n;++i) for(long long j = 1;j<=m;++j) cin>>a[i*m+j]; long long q; long long ans = 0; cin>>q; while(q--){ long long i,j; cin>>i>>j; ++i; ++j; b[i*m+j] = true; ans += a[i*m+j]; for(long long k = 0;k<4;++k) merge(i,j,i+px[k],j+py[k]); } for(long long i = 1;i<=n;++i){ for(long long j = 1;j<=m;++j){ long long pos = i * m + j; if(vis[pos]) continue; dfs(pos); if(cnt * 3 > v.size()){ cout<<"No"; return; } sort(all(v)); reverse(all(v)); for(long long k = 0;k<cnt*3;++k) ans += v[k]; v.clear(); cnt = 0; } } cout<<ans; } int main(){ // freopen("file.in","r",stdin); ios::sync_with_stdio(false); cin.tie(nullptr); solve(); }
#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...