# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
39662 |
2018-01-17T03:21:03 Z |
funcsr |
Rail (IOI14_rail) |
C++14 |
|
818 ms |
98796 KB |
#include "rail.h"
#include <vector>
#include <iostream>
#include <set>
#include <queue>
#include <algorithm>
#include <cassert>
using namespace std;
typedef pair<int, int> P;
#define rep(i, n) for (int i=0; i<(n); i++)
#define MAX_N (1<<19)
#define INF 1145141919
#define all(x) x.begin(), x.end()
#define pb push_back
#define _1 first
#define _2 second
int memo[5000][5000];
int query(int a, int b) {
if (memo[a][b] != -1) return memo[a][b];
return memo[a][b] = getDistance(a, b);
}
void findLocation(int N, int first, int location[], int stype[]) {
rep(i, N) rep(j, N) memo[i][j] = -1;
rep(i, N) memo[i][i] = 0;
P m = P(INF, -1);
rep(i, N) if (i != 0) m = min(m, P(query(0, i), i));
int a = m._2;
m = P(INF, -1);
rep(i, N) if (i != a) m = min(m, P(query(a, i), i));
int b = m._2;
location[0] = first;
location[a] = location[0] + query(0, a);
location[b] = location[a] - query(a, b);
stype[a] = 2;
stype[b] = 1;
vector<P> ps;
rep(i, N) if (i != a && i != b) ps.pb(P(query(a, i), i));
sort(all(ps));
vector<int> ls, rs;
for (P pp : ps) {
int i = pp._2, k = -1;
if (query(a, i) < query(b, i)) {
// left
for (int p : ls) {
if (query(p, i) + query(a, p) == query(a, i)) {
k = p;
break;
}
}
if (k == -1) {
stype[i] = 1;
location[i] = location[a] - pp._1;
ls.pb(i);
}
else {
stype[i] = 2;
location[i] = location[a] - (pp._1 - query(k, i)*2);
}
}
else {
// right
for (int p : rs) {
if (query(b, p) + query(p, i) == query(b, i)) {
k = p;
break;
}
}
if (k == -1) {
stype[i] = 2;
location[i] = location[b] + pp._1 - query(a, b);
rs.pb(i);
}
else {
stype[i] = 1;
location[i] = location[b] + (pp._1 - query(a, b) - query(k, i)*2);
}
}
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
760 KB |
Output is correct |
2 |
Correct |
3 ms |
760 KB |
Output is correct |
3 |
Correct |
3 ms |
924 KB |
Output is correct |
4 |
Correct |
3 ms |
924 KB |
Output is correct |
5 |
Correct |
3 ms |
924 KB |
Output is correct |
6 |
Correct |
2 ms |
996 KB |
Output is correct |
7 |
Correct |
2 ms |
996 KB |
Output is correct |
8 |
Correct |
3 ms |
996 KB |
Output is correct |
9 |
Correct |
3 ms |
996 KB |
Output is correct |
10 |
Correct |
2 ms |
996 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
996 KB |
Output is correct |
2 |
Correct |
3 ms |
996 KB |
Output is correct |
3 |
Correct |
3 ms |
1000 KB |
Output is correct |
4 |
Correct |
2 ms |
1000 KB |
Output is correct |
5 |
Correct |
3 ms |
1000 KB |
Output is correct |
6 |
Correct |
2 ms |
1004 KB |
Output is correct |
7 |
Correct |
2 ms |
1004 KB |
Output is correct |
8 |
Correct |
2 ms |
1004 KB |
Output is correct |
9 |
Correct |
2 ms |
1004 KB |
Output is correct |
10 |
Correct |
3 ms |
1004 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
580 ms |
98708 KB |
Output is correct |
2 |
Correct |
487 ms |
98708 KB |
Output is correct |
3 |
Correct |
435 ms |
98712 KB |
Output is correct |
4 |
Correct |
427 ms |
98728 KB |
Output is correct |
5 |
Correct |
537 ms |
98728 KB |
Output is correct |
6 |
Correct |
818 ms |
98728 KB |
Output is correct |
7 |
Correct |
699 ms |
98728 KB |
Output is correct |
8 |
Correct |
374 ms |
98796 KB |
Output is correct |
9 |
Correct |
400 ms |
98796 KB |
Output is correct |
10 |
Correct |
385 ms |
98796 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
469 ms |
98796 KB |
Output is correct |
2 |
Correct |
402 ms |
98796 KB |
Output is correct |
3 |
Correct |
382 ms |
98796 KB |
Output is correct |
4 |
Correct |
360 ms |
98796 KB |
Output is correct |
5 |
Correct |
491 ms |
98796 KB |
Output is correct |
6 |
Correct |
588 ms |
98796 KB |
Output is correct |
7 |
Correct |
426 ms |
98796 KB |
Output is correct |
8 |
Correct |
374 ms |
98796 KB |
Output is correct |
9 |
Correct |
380 ms |
98796 KB |
Output is correct |
10 |
Correct |
376 ms |
98796 KB |
Output is correct |
11 |
Incorrect |
475 ms |
98796 KB |
Output isn't correct |
12 |
Halted |
0 ms |
0 KB |
- |