Submission #1063873

#TimeUsernameProblemLanguageResultExecution timeMemory
1063873Mr_HusanboyRail (IOI14_rail)C++17
30 / 100
66 ms98384 KiB
#include "rail.h"
#include <bits/stdc++.h>

using namespace std;

const int maxn = 5e3;
const int inf = 1e9;

int memo[maxn][maxn];

int get(int i, int j){
	if(i == j) return 0;
	if(memo[i][j] != -1){
		return memo[i][j];
	}
	return memo[i][j] = getDistance(i, j);
}

void findLocation(int n, int first, int location[], int stype[])
{
	for(int i = 0; i < n; i ++){
		location[i] = -1;
		for(int j = 0; j < n; j ++){
			memo[i][j] = -1;
		}
	}
	location[0] = first;
	stype[0] = 1;
	if(n == 1){
		return;
	}
	int cl = inf + 1, ind = 0;
	for(int j = 1; j < n; j ++){
		if(cl > get(0, j)){
			cl = get(0, j);
			ind = j;
		}
	}
	for(int j = 1; j < n; j ++){
		if(ind == j){
			location[j] = first + cl;
			stype[j] = 2;
		}else
		if(get(0, j) == cl + get(ind, j)){
			location[j] = first + cl - get(ind, j);
			stype[j] = 1;
		}else{
			location[j] = first + get(0, j);
			stype[j] = 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...