# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
102759 |
2019-03-27T12:17:01 Z |
wxh010910 |
Rail (IOI14_rail) |
C++17 |
|
98 ms |
760 KB |
#include <bits/stdc++.h>
#include "rail.h"
using namespace std;
void findLocation(int N, int first, int location[], int stype[]) {
location[0] = first;
stype[0] = 1;
vector<int> dist0(N);
for (int i = 1; i < N; ++i) {
dist0[i] = getDistance(0, i);
}
int p = 1;
for (int i = 2; i < N; ++i) {
if (dist0[p] > dist0[i]) {
p = i;
}
}
location[p] = first + dist0[p];
stype[p] = 2;
vector<int> distp(N);
vector<int> left;
vector<int> right;
for (int i = 1; i < N; ++i) {
if (i != p) {
distp[i] = getDistance(p, i);
if (dist0[i] == distp[i] + dist0[p] && distp[i] <= dist0[p]) {
location[i] = location[p] - distp[i];
stype[i] = 1;
} else {
if (dist0[i] == distp[i] + dist0[p]) {
left.push_back(i);
} else {
right.push_back(i);
}
}
}
}
{
sort(left.begin(), left.end(), [&](int a, int b) {
return distp[a] < distp[b];
});
vector<int> down;
down.push_back(0);
for (auto i : left) {
int foo = location[p] - distp[i];
int bar = location[down.back()] + getDistance(down.back(), i);
int near = -1;
for (auto j : down) {
if (location[j] <= bar) {
near = j;
break;
}
}
if (location[near] - foo == bar - location[near]) {
location[i] = bar;
stype[i] = 2;
} else {
location[i] = foo;
stype[i] = 1;
down.push_back(i);
}
}
}
{
sort(right.begin(), right.end(), [&](int a, int b) {
return dist0[a] < dist0[b];
});
vector<int> up;
up.push_back(p);
for (auto i : right) {
int foo = location[0] + dist0[i];
int bar = location[up.back()] - getDistance(up.back(), i);
int near = -1;
for (auto j : up) {
if (location[j] >= bar) {
near = j;
break;
}
}
if (foo - location[near] == location[near] - bar) {
location[i] = bar;
stype[i] = 1;
} else {
location[i] = foo;
stype[i] = 2;
up.push_back(i);
}
}
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
256 KB |
Output is correct |
2 |
Correct |
2 ms |
384 KB |
Output is correct |
3 |
Correct |
2 ms |
384 KB |
Output is correct |
4 |
Correct |
3 ms |
384 KB |
Output is correct |
5 |
Correct |
2 ms |
384 KB |
Output is correct |
6 |
Correct |
2 ms |
384 KB |
Output is correct |
7 |
Correct |
2 ms |
384 KB |
Output is correct |
8 |
Correct |
2 ms |
384 KB |
Output is correct |
9 |
Correct |
2 ms |
256 KB |
Output is correct |
10 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
360 KB |
Output is correct |
2 |
Correct |
2 ms |
384 KB |
Output is correct |
3 |
Correct |
2 ms |
384 KB |
Output is correct |
4 |
Correct |
2 ms |
384 KB |
Output is correct |
5 |
Correct |
2 ms |
384 KB |
Output is correct |
6 |
Correct |
2 ms |
384 KB |
Output is correct |
7 |
Correct |
4 ms |
384 KB |
Output is correct |
8 |
Correct |
3 ms |
404 KB |
Output is correct |
9 |
Correct |
2 ms |
384 KB |
Output is correct |
10 |
Correct |
4 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
89 ms |
504 KB |
Output is correct |
2 |
Correct |
78 ms |
608 KB |
Output is correct |
3 |
Correct |
75 ms |
632 KB |
Output is correct |
4 |
Correct |
79 ms |
604 KB |
Output is correct |
5 |
Correct |
79 ms |
676 KB |
Output is correct |
6 |
Correct |
80 ms |
632 KB |
Output is correct |
7 |
Correct |
73 ms |
604 KB |
Output is correct |
8 |
Correct |
98 ms |
632 KB |
Output is correct |
9 |
Correct |
73 ms |
628 KB |
Output is correct |
10 |
Correct |
81 ms |
632 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
95 ms |
620 KB |
Output is correct |
2 |
Correct |
77 ms |
604 KB |
Output is correct |
3 |
Correct |
80 ms |
636 KB |
Output is correct |
4 |
Correct |
79 ms |
632 KB |
Output is correct |
5 |
Correct |
82 ms |
548 KB |
Output is correct |
6 |
Correct |
76 ms |
628 KB |
Output is correct |
7 |
Correct |
76 ms |
612 KB |
Output is correct |
8 |
Correct |
74 ms |
632 KB |
Output is correct |
9 |
Correct |
74 ms |
632 KB |
Output is correct |
10 |
Correct |
74 ms |
760 KB |
Output is correct |
11 |
Correct |
76 ms |
632 KB |
Output is correct |
12 |
Correct |
74 ms |
632 KB |
Output is correct |
13 |
Correct |
81 ms |
632 KB |
Output is correct |
14 |
Correct |
80 ms |
632 KB |
Output is correct |
15 |
Correct |
87 ms |
760 KB |
Output is correct |
16 |
Correct |
84 ms |
632 KB |
Output is correct |
17 |
Correct |
78 ms |
732 KB |
Output is correct |
18 |
Correct |
76 ms |
632 KB |
Output is correct |
19 |
Correct |
81 ms |
632 KB |
Output is correct |
20 |
Correct |
86 ms |
632 KB |
Output is correct |