제출 #835061

#제출 시각아이디문제언어결과실행 시간메모리
835061Liudas철로 (IOI14_rail)C++17
0 / 100
45 ms468 KiB
#include "rail.h" #include <stdlib.h> #include <stdio.h> #include <string.h> #include <assert.h> #include "rail.h" #include <set> #include <vector> #include <numeric> #include <algorithm> #include <iostream> using namespace std; void findLocation(int N, int first, int location[], int stype[]) { int lid = 0, rid = -1; vector<int> dist(N, 0); for(int i = 0; i < N; i ++){ if(i == lid)continue; int temp = getDistance(lid, i); dist[i] = temp; } vector<int> order(N); iota(order.begin(), order.end(), 0); sort(order.begin(), order.end(), [&](int a, int b){return dist[a] < dist[b];}); int d = dist[order[1]]; rid = order[1]; lid = order[0]; stype[order[0]] = 1; stype[order[1]] = 2; location[order[0]] = first; location[order[1]] = first + d; for(int i : order){ if(stype[i])continue; int t1 = getDistance(lid, i); int t2 = getDistance(rid, i); if(t1 + d == t2){ stype[i] = 2; d = t1; location[i] = location[lid] + d; rid = i; } if(t2 + d >= t1 && t2 < d){ stype[i] = 1; location[i] = location[rid] - t2; } if(t2 + d >= t1 && t2 > d){ stype[i] = 1; location[i] = location[rid] - t2; d = t2; lid = i; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...