Submission #430444

#TimeUsernameProblemLanguageResultExecution timeMemory
430444BlagojceRail (IOI14_rail)C++11
30 / 100
91 ms472 KiB
#include <bits/stdc++.h> #define fr(i, n, m) for(int i = (n); i < (m); i ++) #define pb push_back #define st first #define nd second #define pq priority_queue #define all(x) begin(x), end(x) using namespace std; typedef long long ll; typedef long double ld; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const ll inf = 1e18; const int i_inf = 1e9; const ll mod = 1e9+7; mt19937 _rand(time(NULL)); const int mxn = 5005; #include "rail.h" int d0[mxn]; int d1[mxn]; /* int getDistance(int i, int j){ cout<<"? "<<i<<' '<<j<<endl; int ret; cin >> ret; return ret; } */ int s[mxn]; int l[mxn]; vector<int> L; vector<int> R; void findLocation(int N, int first, int location[], int stype[]){ location[0] = first; stype[0] = 1; if(N == 1){ return; } fr(i, 1, N){ d0[i] = getDistance(0, i); } int minD = 1e9; int p = 0; fr(i, 1, N){ if(d0[i] < minD){ minD = d0[i]; p = i; } } int pivot = p; d1[0] = d0[p]; fr(i, 1, N){ if(i == p) continue; d1[i] = getDistance(p, i); } fr(i, 0, N){ if(i == p || i == 0) continue; if(d0[i] == d1[i] + d0[p]){ L.pb(i); } else{ R.pb(i); } } sort(all(R), [](const int &i, const int &j){ return d0[i] < d0[j]; }); location[p] = location[0] + d0[p]; stype[p] = 2; if(N == 2){ return; } for(auto u : R){ int w = getDistance(pivot, u); if(d0[u] == d0[pivot] + w){ location[u] = location[pivot] - w; stype[u] = 1; } else{ location[u] = location[0] + d0[u]; stype[u] = 2; pivot = u; } } int p2; minD = 1e9; fr(i, 0, N){ if(i == p) continue; if(d1[i] < minD){ minD = d1[i]; p2 = i; } } L.pb(0); sort(all(L), [](const int &i, const int &j){ return d1[i] < d1[j]; }); int pivot2 = p2; location[p2] = location[p] - d1[p2]; stype[p2] = 1; for(auto u : L){ if(u == p2) continue; int w = getDistance(pivot2, u); if(d1[u] == d1[pivot2] + w){ location[u] = location[pivot2] + w; stype[u] = 2; } else{ location[u] = location[p] - d1[u]; stype[u] = 1; pivot2 = u; } } } /* int main(){ int loc[mxn]; int sty[mxn]; findLocation(4, 2, loc, sty); fr(i, 0, 4){ cout<<loc[i]<<' '; } cout<<endl; fr(i, 0, 4){ cout<<sty[i]<<' '; } cout<<endl; } */

Compilation message (stderr)

rail.cpp: In function 'void findLocation(int, int, int*, int*)':
rail.cpp:135:11: warning: 'p2' may be used uninitialized in this function [-Wmaybe-uninitialized]
  135 |  location[p2] = location[p] - d1[p2];
      |           ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...