Submission #399762

#TimeUsernameProblemLanguageResultExecution timeMemory
399762JasiekstrzRail (IOI14_rail)C++17
100 / 100
99 ms708 KiB
#include<bits/stdc++.h> #include "rail.h" #define fi first #define se second using namespace std; const int NN=5e3; const int INF=1e9+7; vector<pair<int,int>> t; map<int,int> by_pos; void findLocation(int N,int first,int location[],int stype[]) { location[0]=first; stype[0]=1; by_pos[first]=0; t.reserve(N+10); for(int i=1;i<N;i++) t.emplace_back(getDistance(0,i),i); sort(t.begin(),t.end()); reverse(t.begin(),t.end()); int a=0,b=0; b=t.back().se; stype[b]=2; location[b]=first+t.back().fi; by_pos[location[b]]=b; t.pop_back(); while(!t.empty()) { int v=t.back().se; int x=getDistance(a,v),y=getDistance(b,v),z=t.back().fi; t.pop_back(); int c; int c1=location[a]+x; int c2=location[b]-y; int mid=(c1+c2)/2; //cerr<<v<<": a="<<a<<" b="<<b<<" x="<<x<<" y="<<y<<" z="<<z<<" c1="<<c1<<" c2="<<c2<<" "; if(by_pos.find(mid)!=by_pos.end()) { if(stype[by_pos[mid]]==1) stype[v]=2; else stype[v]=1; } else if(first<mid) stype[v]=2; else // first>mid stype[v]=1; if(stype[v]==1) c=c2; else c=c1; location[v]=c; by_pos[c]=v; if(c>location[b]) b=v; else if(c<location[a]) a=v; //cerr<<"c="<<c<<"\n"; } return; }

Compilation message (stderr)

rail.cpp: In function 'void findLocation(int, int, int*, int*)':
rail.cpp:29:45: warning: unused variable 'z' [-Wunused-variable]
   29 |   int x=getDistance(a,v),y=getDistance(b,v),z=t.back().fi;
      |                                             ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...