제출 #409402

#제출 시각아이디문제언어결과실행 시간메모리
409402MDario철로 (IOI14_rail)C++11
30 / 100
86 ms848 KiB
#include "rail.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; #define F first #define S second void findLocation(int N, int first, int location[], int stype[]){ for(int i=0; i<N; i++){ stype[i]=0; } location[0]=first; stype[0]=1; if(N==1)return; int a[N]; a[0]=0; map<ll, ll> m; vector<pair<ll, ll>> v, v1; for(int i=1; i<N; i++){ a[i]=getDistance(0, i); v.push_back({a[i], i}); } sort(v.begin(), v.end()); int l=0, r=v[0].S, dl=0, dr=0, c=0; location[r]=first+v[0].F; stype[r]=2; m[location[l]]=1; m[location[r]]=2; for(int i=1; i<N-1; i++){ dl=getDistance(l, v[i].S); dr=getDistance(r, v[i].S); c=(location[l]+dl+location[r]-dr)/2; if(m[c]==0){ stype[v[i].S]=2; location[v[i].S]=location[l]+dl; if(location[v[i].S]>location[r])r=v[i].S; } else if(m[c]==1){ stype[v[i].S]=2; location[v[i].S]=location[l]+dl; if(location[v[i].S]>location[r])r=v[i].S; } else{ stype[v[i].S]=1; location[v[i].S]=location[r]-dr; if(location[v[i].S]<location[l])l=v[i].S; } m[location[v[i].S]]=stype[v[i].S]; } return ; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...