# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
66974 |
2018-08-13T04:38:30 Z |
Namnamseo |
Rail (IOI14_rail) |
C++17 |
|
122 ms |
20460 KB |
#include "rail.h"
#include <bits/stdc++.h>
using namespace std;
using pp=pair<int,int>;
#define all(v) (v).begin(), (v).end()
#define pb push_back
int dcache[5000][5000];
int get_dist(int a, int b){
if(dcache[a][b]) return dcache[a][b]-1;
int d = getDistance(a, b);
dcache[a][b] = d+1;
return d;
}
#define printf if(0) printf
vector<pp> ds;
vector<int> lv, rv;
bool ex[1000010];
bool ex2[1000010];
void findLocation(int n, int first, int location[], int stype[])
{
if(n == 1){
location[0] = first;
stype[0] = 1;
return;
}
for(int i=1; i<n; ++i) ds.emplace_back(get_dist(0, i), i);
sort(all(ds));
int diam, ri;
tie(diam, ri) = ds[0];
int rp = first + diam;
location[0] = first; stype[0] = 1;
location[ri] = rp; stype[ri] = 2;
for(int t=1; t<n-1; ++t){
int i = ds[t].second;
int dl = get_dist(0, i);
int dr = get_dist(ri, i);
if(dr < diam && dl == diam + dr){
location[i] = rp - dr;
stype[i] = 1;
continue;
}
if(dl == dr + diam) lv.pb(i);
else rv.pb(i);
}
int lp = first, li = 0;
for(int i : lv){
int ld = get_dist(li, i);
int tm = (rp - lp) + ld - get_dist(ri, i);
tm /= 2;
if(lp + tm <= int(1e6) && ex[lp+tm]){
location[i] = lp + ld;
stype[i] = 2;
} else {
lp = rp - get_dist(ri, i);
li = i;
location[i] = lp;
stype[i] = 1;
ex[lp] = 1;
}
}
for(int i : rv){
int rd = get_dist(ri, i);
int tm = (rp-first) + rd - get_dist(0, i);
tm /= 2;
if(0 <= rp-tm && ex2[rp-tm]){
location[i] = rp - rd;
stype[i] = 1;
} else {
rp = first + get_dist(0, i);
ri = i;
location[i] = rp;
stype[i] = 2;
ex2[rp] = 1;
}
}
}
# |
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 |
944 KB |
Output is correct |
4 |
Correct |
3 ms |
944 KB |
Output is correct |
5 |
Correct |
2 ms |
944 KB |
Output is correct |
6 |
Correct |
3 ms |
960 KB |
Output is correct |
7 |
Correct |
2 ms |
960 KB |
Output is correct |
8 |
Correct |
3 ms |
976 KB |
Output is correct |
9 |
Correct |
3 ms |
976 KB |
Output is correct |
10 |
Correct |
3 ms |
1020 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
1148 KB |
Output is correct |
2 |
Correct |
4 ms |
1148 KB |
Output is correct |
3 |
Correct |
3 ms |
1148 KB |
Output is correct |
4 |
Correct |
3 ms |
1148 KB |
Output is correct |
5 |
Correct |
2 ms |
1148 KB |
Output is correct |
6 |
Correct |
2 ms |
1148 KB |
Output is correct |
7 |
Correct |
3 ms |
1148 KB |
Output is correct |
8 |
Correct |
3 ms |
1148 KB |
Output is correct |
9 |
Correct |
3 ms |
1148 KB |
Output is correct |
10 |
Correct |
4 ms |
1148 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
116 ms |
18912 KB |
Output is correct |
2 |
Correct |
113 ms |
18964 KB |
Output is correct |
3 |
Correct |
111 ms |
19192 KB |
Output is correct |
4 |
Correct |
108 ms |
19192 KB |
Output is correct |
5 |
Correct |
113 ms |
19192 KB |
Output is correct |
6 |
Correct |
113 ms |
19192 KB |
Output is correct |
7 |
Correct |
122 ms |
19272 KB |
Output is correct |
8 |
Correct |
119 ms |
19352 KB |
Output is correct |
9 |
Correct |
109 ms |
19504 KB |
Output is correct |
10 |
Correct |
112 ms |
19504 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
106 ms |
19504 KB |
Output is correct |
2 |
Correct |
111 ms |
19692 KB |
Output is correct |
3 |
Correct |
112 ms |
19808 KB |
Output is correct |
4 |
Correct |
115 ms |
19808 KB |
Output is correct |
5 |
Correct |
114 ms |
19808 KB |
Output is correct |
6 |
Correct |
113 ms |
19808 KB |
Output is correct |
7 |
Correct |
121 ms |
19808 KB |
Output is correct |
8 |
Correct |
112 ms |
19808 KB |
Output is correct |
9 |
Correct |
106 ms |
19808 KB |
Output is correct |
10 |
Correct |
107 ms |
19856 KB |
Output is correct |
11 |
Correct |
109 ms |
20016 KB |
Output is correct |
12 |
Correct |
106 ms |
20064 KB |
Output is correct |
13 |
Correct |
106 ms |
20064 KB |
Output is correct |
14 |
Correct |
107 ms |
20096 KB |
Output is correct |
15 |
Correct |
121 ms |
20096 KB |
Output is correct |
16 |
Correct |
114 ms |
20136 KB |
Output is correct |
17 |
Correct |
105 ms |
20136 KB |
Output is correct |
18 |
Correct |
113 ms |
20460 KB |
Output is correct |
19 |
Correct |
107 ms |
20460 KB |
Output is correct |
20 |
Correct |
116 ms |
20460 KB |
Output is correct |