Submission #294988

#TimeUsernameProblemLanguageResultExecution timeMemory
294988mieszko11bRail (IOI14_rail)C++14
8 / 100
157 ms1272 KiB
#include "rail.h" #include <bits/stdc++.h> using namespace std; using ii = pair<int, int>; #define X first #define Y second map<ii, int> M; int dist(int a, int b) { if(a > b) swap(a, b); if(M.count({a, b})) return M[{a, b}]; return M[{a, b}] = getDistance(a, b); } void findLocation(int N, int first, int location[], int stype[]) { stype[0] = 1; location[0] = first; int b = 1; for(int i = 2 ; i < N ; i++) if(dist(0, i) < dist(0, b)) b = i; stype[b] = 2; location[b] = location[0] + dist(0, b); vector<int> lst; lst.push_back(b); int fst = 0; vector<ii> cand; for(int i = 0 ; i < N ; i++) { if(i == 0 || i == b) continue; int d0 = dist(0, i); int db = dist(b, i); int d = dist(0, b); if(d0 - db == d) { if(db < d) cand.push_back({d0, i}); } else cand.push_back({d0, i}); } sort(cand.begin(), cand.end()); for(auto p : cand) { int d = dist(0, lst.back()); int w = p.Y; int dlst = dist(lst.back(), w); bool ins = true; if(dlst >= d) ins = false; else { int ind = 0; while(dist(lst[ind], 0) < d - dlst) ind++; if(dist(lst[ind], 0) == d - dlst) ins = false; else { if(dist(0, lst[ind]) + (dist(0, lst[ind]) + dlst - d) != dist(0, w)) ins = false; } } if(ins) { stype[w] = 1; location[w] = location[lst.back()] - dlst; } else { stype[w] = 2; location[w] = location[0] + dist(0, w); lst.push_back(w); } } //~ int a = 0; //~ for(int i = 1 ; i < N ; i++) //~ if(i != b) //~ if(dist(b, i) < dist(b, a)) //~ a = i; //~ stype[a] = 1; //~ location[a] = location[b] - dist(b, a); }

Compilation message (stderr)

rail.cpp: In function 'void findLocation(int, int, int*, int*)':
rail.cpp:33:6: warning: unused variable 'fst' [-Wunused-variable]
   33 |  int fst = 0;
      |      ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...