Submission #292484

#TimeUsernameProblemLanguageResultExecution timeMemory
292484AutoratchSplit the Attractions (IOI19_split)C++14
22 / 100
617 ms1048580 KiB
#include "split.h" #include <bits/stdc++.h> using namespace std; const int N = 1e5; int n,a,b,c; int mn1 = INT_MAX,mn2 = INT_MAX,id1,id2; vector<int> adj[N]; vector<int> sq; int sz[N],sf = -1,ty = -1,pa[N]; void get(int u,int p){ sz[u] = 1; for(int v : adj[u]) if(v!=p) get(v,u),sz[u]+=sz[v]; } void dfs(int u,int p) { pa[u] = p; sq.push_back(u); if(sz[u]>=mn1 and n-sz[u]>=mn2) sf = u,ty = 1; if(sz[u]>=mn2 and n-sz[u]>=mn1) sf = u,ty = 2; for(int v : adj[u]) if(v!=p) dfs(v,u); } void dv(int u,int p) { if(u==sf) return; sq.push_back(u); for(int v : adj[u]) if(v!=p) dv(v,u); } vector<int> find_split(int _n,int _a,int _b,int _c,vector<int> p,vector<int> q) { n = _n,a = _a,b = _b,c = _c; if(a<mn1) mn1 = a,id1 = 1; if(b<mn1) mn1 = b,id1 = 2; if(c<mn1) mn1 = c,id1 = 3; if(a<mn2 and id1!=1) mn2 = a,id2 = 1; if(b<mn2 and id1!=2) mn2 = b,id2 = 2; if(c<mn2 and id1!=3) mn2 = c,id2 = 3; for(int i = 0;i < p.size();i++) { int a = p[i],b = q[i]; adj[a].push_back(b),adj[b].push_back(a); } get(0,-1); dfs(0,-1); vector<int> res(n); if(sf==-1) return res; sq.clear(); dfs(sf,pa[sf]); if(ty==1) for(int i = 0;i < mn1;i++) res[sq[i]] = id1; else for(int i = 0;i < mn2;i++) res[sq[i]] = id2; sq.clear(); dv(0,-1); if(ty==1) for(int i = 0;i < mn2;i++) res[sq[i]] = id2; else for(int i = 0;i < mn1;i++) res[sq[i]] = id1; for(int i = 0;i < n;i++) if(!res[i]) res[i] = 6-id1-id2; return res; }

Compilation message (stderr)

split.cpp: In function 'std::vector<int> find_split(int, int, int, int, std::vector<int>, std::vector<int>)':
split.cpp:40:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |     for(int i = 0;i < p.size();i++)
      |                   ~~^~~~~~~~~~
#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...