Submission #538170

#TimeUsernameProblemLanguageResultExecution timeMemory
538170jamezzzSplit the Attractions (IOI19_split)C++17
11 / 100
109 ms12580 KiB
#include "split.h"
#include <bits/stdc++.h>
using namespace std;

#define sf scanf
#define pf printf
#define fi first
#define se second
#define pb push_back
#define all(x) x.begin(),x.end()
typedef pair<int,int> ii;

int rem=0,mark[3];
vector<int> res;
vector<int> AL[100005];

void dfs(int u){
	if(rem==0)return;
	res[u]=mark[1];
	--rem;
	for(int v:AL[u]){
		if(res[v]!=0)continue;
		dfs(v);
	}
}

vector<int> find_split(int n,int a,int b,int c,vector<int> p,vector<int> q){
	vector<ii> v;
	v.pb({a,1});v.pb({b,2});v.pb({c,3});
	sort(all(v));
	for(int i=0;i<3;++i)mark[i]=v[i].se;
	
	res.resize(n);
	for(int i=0;i<p.size();++i){
		AL[p[i]].pb(q[i]);
		AL[q[i]].pb(p[i]);
	}
	rem=v[1].fi;
	dfs(0);
	
	bool h=true;
	for(int i=0;i<n;++i){
		if(res[i]!=0)continue;
		if(h)res[i]=mark[0],h=false;
		else res[i]=mark[2];
	}
	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:34:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |  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...