Submission #825734

#TimeUsernameProblemLanguageResultExecution timeMemory
825734pawnedSplit the Attractions (IOI19_split)C++17
0 / 100
46 ms11088 KiB
#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define pb push_back
typedef long long ll;
typedef pair<int, int> ii;
typedef vector<int> vi;

#include "split.h"

int N, M;
int A, B, C;

vi adj[100005];

vi find_split(int n, int a, int b, int c, vi p, vi q) {
	N = n;
	A = a; B = b; C = c;
	M = p.size();

	for (int i = 0; i < M; i++) {
		adj[p[i]].pb(q[i]);
		adj[q[i]].pb(p[i]);
	}
	int endpt = 0;
	for (int i = 0; i < N; i++) {
		if (adj[i].size() < 2)
			endpt = i;
	}
	vi order;
	int prev = -1;
	int curr = endpt;
	for (int i = 0; i < N; i++) {
		order.pb(curr);
		if (adj[curr][0] == prev) {
			prev = curr;
			curr = adj[curr][1];
		}
		else {
			prev = curr;
			curr = adj[curr][0];
		}
	}
/*
	cout<<"order: ";
	for (int i : order)
		cout<<i<<" ";
	cout<<endl;
*/
	vi answer(N);
	for (int i = 0; i < N; i++) {
		if (i < A)
			answer[i] = 1;
		else if (A <= i && i < A + B)
			answer[i] = 2;
		else
			answer[i] = 3;
	}
	return answer;
}
#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...