Submission #639737

#TimeUsernameProblemLanguageResultExecution timeMemory
639737ShirleyMT-Covering (eJOI19_covering)C++14
100 / 100
331 ms59060 KiB
#include <bits/stdc++.h> using namespace std; #define int int64_t typedef vector<int> vi; typedef vector<vi> vvi; typedef vector<vvi> vvvi; typedef pair<int,int> ii; typedef vector<ii> vii; typedef vector<vii> vvii; typedef vector<vvii> vvvii; typedef vector<bool> vb; typedef vector<vb> vvb; #define x first #define y second #define pb push_back #define loop(i,s,e) for(int i=s;i<e;i++) #define loopr(i,s,e) for(int i=e-1;i>=s;i--) #define chkmax(a,b) a=max(a,b) #define chkmin(a,b) a=min(a,b) #define all(a) a.begin(),a.end() #define fast {ios_base::sync_with_stdio(false); cin.tie(0);} const int inf = 1e11; const int INF = 1e9; const int mod = 1e9+7; const int sz = 1e6; int n,m,k; int g[sz]; bool s[sz]; bool vis[sz]; vi adj[sz]; int cnt_s=0; vi vals; inline bool in_limits(int i, int j){ return (i>=0 && i<n && j>=0 && j<m); } void dfs(int v){ vis[v]=1; if(!s[v]) vals.pb(g[v]); else cnt_s++; for(auto u:adj[v]){ if(vis[u]) continue; dfs(u); } } int32_t main() { fast; cin >> n >> m; loop(i,0,n){ loop(j,0,m){ int v = i*m+j; cin >> g[v]; s[v]=vis[v]=0; } } cin >> k; int ans=0; loop(i,0,k){ int r,c; cin >> r >>c; int v= r*m+c; s[v]=true; ans+=g[v]; vii d = {{-1,0}, {1,0}, {0,1}, {0,-1}}; for(auto it:d) { int di = it.x, dj = it.y; int ni = r + di, nj = c + dj; int u = ni*m+nj; if (!in_limits(ni, nj)) continue; adj[v].pb(u); adj[u].pb(v); } } loop(r,0,n){ loop(c,0,m){ int v = r*m+c; if(!vis[v] && s[v]){ cnt_s=0; vals.clear(); dfs(v); if(vals.size() < 3*cnt_s){ cout << "No"; return 0; } sort(all(vals)); loop(i,1,3*cnt_s+1) ans+=vals[vals.size()-i]; } } } cout << ans; return 0; }

Compilation message (stderr)

covering.cpp: In function 'int32_t main()':
covering.cpp:83:32: warning: comparison of integer expressions of different signedness: 'std::vector<long int>::size_type' {aka 'long unsigned int'} and 'int64_t' {aka 'long int'} [-Wsign-compare]
   83 |                 if(vals.size() < 3*cnt_s){
      |                    ~~~~~~~~~~~~^~~~~~~~~
#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...