Submission #252474

#TimeUsernameProblemLanguageResultExecution timeMemory
252474eohomegrownapps철로 (IOI14_rail)C++14
0 / 100
77 ms640 KiB
#include "rail.h" #include <bits/stdc++.h> using namespace std; int n; //int getDistance(int i, int j); void findLocation(int N, int first, int location[], int stype[]){ //1: lhs (up-down) //2: rhs (down-up) n=N; location[0]=first; stype[0]=1; if (n==1){ return; } vector<pair<int,int>> distfrom0(n-1); for (int i = 1; i<n; i++){ distfrom0[i-1]={getDistance(0,i),i}; } sort(distfrom0.begin(),distfrom0.end()); int elrightof0 = distfrom0[0].second; int furthest = distfrom0[n-2].second; vector<pair<int,int>> distfromend; distfromend.push_back({0,furthest}); //cout<<"furthest: "<<furthest<<'\n'; for (int i = 0; i<n; i++){ if (i==furthest){continue;} int gd = getDistance(furthest,i); //cout<<i<<": "<<gd<<'\n'; distfromend.push_back({gd,i}); } sort(distfromend.begin(),distfromend.end()); vector<int> distarr(n); vector<int> indarr(n); for (int i = 0; i<n; i++){ distarr[i]=distfromend[i].first; indarr[i]=distfromend[i].second; } int pos0 = find(indarr.begin(),indarr.end(),0)-indarr.begin(); int posright = find(distarr.begin(),distarr.end(),elrightof0)-distarr.begin(); if (posright<pos0){ reverse(distarr.begin(), distarr.end()); reverse(indarr.begin(), indarr.end()); pos0=n-1-pos0; } //cout<<"dist\n"; for (int i = 0; i<n; i++){ //cout<<distarr[i]<<" "<<indarr[i]<<'\n'; } //cout<<pos0<<'\n'; for (int i = pos0; i<n-1; i++){ //from i+1 to i location[indarr[i+1]]=location[indarr[i]]+abs(distarr[i+1]-distarr[i]); int dist = getDistance(indarr[i+1],indarr[0]); if (dist==abs(distarr[i+1]-distarr[0])){ stype[indarr[i+1]]=2; } else { stype[indarr[i+1]]=1; } } //cout<<"ans\n"; for (int i = pos0-1; i>=0; i--){ //from i to i+1 //cout<<"proc "<<indarr[i]<<'\n'; location[indarr[i]]=location[indarr[i+1]]-abs(distarr[i]-distarr[i+1]); int dist = getDistance(indarr[i],indarr[n-1]); if (dist==abs(distarr[i+1]-distarr[n-1])){ stype[indarr[i]]=1; } else { stype[indarr[i]]=2; } } for (int i = 0; i<n; i++){ //cout<<location[i]<<" "<<stype[i]<<'\n'; } 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...