Submission #1021271

#TimeUsernameProblemLanguageResultExecution timeMemory
1021271vjudge1Split the Attractions (IOI19_split)C++17
0 / 100
52 ms15012 KiB
#include "split.h" #include<iostream> #include<vector> using namespace std; int N,rm,v1,v2,c1[4],c2[4],d=-1,e=0,sz[100000],pd[100000]; vector<int>res,ad[100000]; void dfs(int u,int p=-1){ pd[u]=p; sz[u]=1; for(auto v:ad[u])if(v!=p){ dfs(v,u); sz[u]+=sz[v]; } if(v2<=sz[u]&&v1<=N-sz[u])d=u,e=2; if(v1<=sz[u]&&v2<=N-sz[u])d=u,e=1; } void fil(int u,int p,int vl){ res[u]=vl; c2[vl]++; for(auto v:ad[u])if(v!=p){ if(c2[vl]==c1[vl])return; fil(v,u,vl); } } vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) { N=n,rm=6; c1[1]=a,c1[2]=b,c1[3]=c; v1=min(min(a,b),c); v2=a+b+c-v1-max(max(a,b),c); for(int i=0;i<n;i++)res.push_back(0); for(int i=0;i<p.size();i++) ad[p[i]].push_back(q[i]), ad[q[i]].push_back(p[i]); if(a==1){ fil(0,-1,2); for(int i=0;i<n;i++)if(res[i]==0){ if(c2[1]==0){ c2[1]=1; res[i]=1; }else res[i]=3; } }else if(p.size()==n-1){ dfs(0); cout<<d<<" "<<e<<'\n'; if(d!=-1){ if(e==1){ if(v1==a)fil(d,pd[d],1),rm-=1; if(v1==b)fil(d,pd[d],2),rm-=2; if(v1==c)fil(d,pd[d],3),rm-=3; if(v2==a)fil(pd[d],d,1),rm-=1; if(v2==b)fil(pd[d],d,2),rm-=2; if(v2==c)fil(pd[d],d,3),rm-=3; }else{ if(v2==a)fil(d,pd[d],1),rm-=1; if(v2==b)fil(d,pd[d],2),rm-=2; if(v2==c)fil(d,pd[d],3),rm-=3; if(v1==a)fil(pd[d],d,1),rm-=1; if(v1==b)fil(pd[d],d,2),rm-=2; if(v1==c)fil(pd[d],d,3),rm-=3; } for(int i=0;i<n;i++)if(res[i]==0)res[i]=rm; } } 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:35:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |  for(int i=0;i<p.size();i++)
      |              ~^~~~~~~~~
split.cpp:46:19: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   46 |  }else if(p.size()==n-1){
      |           ~~~~~~~~^~~~~
#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...