이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |