Submission #1013547

#TimeUsernameProblemLanguageResultExecution timeMemory
1013547pawnedRail (IOI14_rail)C++17
30 / 100
49 ms604 KiB
#pragma GCC optimize("O1,O2,O3,Ofast,unroll-loops")

#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 "rail.h"

int N, S;

ii closeD() {	// closest D, returns {idx, pos}
	int x = -1;
	int mdist = 1e9;	// minimum distance
	int xp = -1;
	for (int i = 1; i < N; i++) {
		int dist = getDistance(0, i);
		if (dist < mdist) {
			x = i;
			xp = S + dist;
			mdist = dist;
		}
	}
	return {x, xp};
}

void findLocation(int n, int s, int location[], int stype[]) {
	N = n; S = s;
	ii pr = closeD();
	int xd = pr.fi;
	int pd = pr.se;
	location[0] = S;
	stype[0] = 1;
	location[xd] = pd;
	stype[xd] = 2;
	for (int i = 0; i < N; i++) {
		if (i == 0 || i == xd)
			continue;
		int d1 = getDistance(0, i);
		int d2 = getDistance(xd, i);
		if (d1 > d2) {	// type C
			location[i] = pd - d2;
			stype[i] = 1;
		}
		else {	// type D
			location[i] = S + d1;
			stype[i] = 2;
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...