Submission #168332

#TimeUsernameProblemLanguageResultExecution timeMemory
168332johuthaRail (IOI14_rail)C++14
30 / 100
3051 ms197752 KiB
#include "rail.h" #include <queue> #include <vector> #include <iostream> using namespace std; void findLocation(int N, int first, int location[], int stype[]) { location[0] = first; stype[0] = 1; priority_queue<pair<int,pair<int,int>>> pq; for (int i = 1; i < N; i++) { location[i] = -1; stype[i] = -1; int qdist = -getDistance(0, i); pq.emplace(qdist, make_pair(0, i)); } while (!pq.empty()) { auto curr = pq.top(); pq.pop(); int dist = -curr.first; int oldnr = curr.second.first; int newnr = curr.second.second; if (location[newnr] != -1) continue; int pos = location[oldnr] + dist*(stype[oldnr] == 1 ? 1 : -1); location[newnr] = pos; stype[newnr] = (stype[oldnr] == 1 ? 2 : 1); for (int i = 0; i < N; i++) { if (location[i] != -1 || i == newnr) continue; pq.emplace(-getDistance(newnr, i), make_pair(newnr, 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...