Submission #536420

#TimeUsernameProblemLanguageResultExecution timeMemory
536420KoDRail (IOI14_rail)C++17
30 / 100
73 ms760 KiB
#include "rail.h" #include <bits/stdc++.h> using std::vector; using std::pair; void findLocation(int N, int first, int location[], int stype[]) { vector<pair<int, int>> list(N - 1); for (int i = 1; i < N; ++i) { list[i - 1] = {getDistance(0, i), i}; } std::sort(list.begin(), list.end()); location[0] = first; stype[0] = 1; int L = 0, R = list[0].second; location[R] = location[0] + list[0].first; stype[R] = 2; std::map<int, int> map; map[location[L]] = 1; map[location[R]] = 2; for (int i = 1; i < N - 1; ++i) { const auto& [d0, id] = list[i]; const int dL = getDistance(L, id); const int dR = getDistance(R, id); const int d = dL - ((dL + dR) - (location[R] - location[L])) / 2; if (map[location[L] + d] == 1) { location[id] = location[L] + dL; stype[id] = 2; if (location[id] > location[R]) { R = id; } } else { location[id] = location[R] - dR; stype[id] = 1; if (location[id] < location[L]) { L = id; } } map[location[id]] = stype[id]; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...