This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#pragma optimize("Bismillahirrahmanirrahim")
//█▀█─█──█──█▀█─█─█
//█▄█─█──█──█▄█─█■█
//█─█─█▄─█▄─█─█─█─█
//Allahuekber
//ahmet23 orz...
//FatihSultanMehmedHan
//YavuzSultanSelimHan
//AbdulhamidHan
//Sani buyuk Osman Pasa Plevneden cikmam diyor.
#define author tolbi
#include<bits/stdc++.h>
using namespace std;
template<typename X, typename Y> ostream& operator<<(ostream& os, pair<X,Y> pr){return os<<pr.first<<" "<<pr.second;}
ostream& operator<<(ostream& os, bool bl){return os<<(int32_t)bl;}
template<typename X> ostream& operator<<(ostream& os, vector<X> v){for(auto &it : v) os<<it<<" ";return os;}
template<typename X, size_t Y> ostream& operator<<(ostream& os, array<X,Y> v){for(auto &it : v) os<<it<<" ";return os;}
#define deci(x) int x;cin>>x;
#define endl '\n'
#define decstr(x) string x;cin>>x;
#define sortarr(x) sort(x.begin(), x.end())
#define sortrarr(x) sort(x.rbegin(), x.rend())
#define rev(x) reverse(x.begin(), x.end())
#define tol(bi) (1LL<<((int)(bi)))
typedef long long ll;
const ll INF = LONG_LONG_MAX;
const int MOD = 1e9+7;
mt19937 ayahya(chrono::high_resolution_clock().now().time_since_epoch().count());
#include "rail.h"
vector<vector<int>> dst;
int dist(int a, int b){
if (dst[a][b]==-1){
dst[a][b]=dst[b][a]=getDistance(a,b);
}
return dst[a][b];
}
void findLocation(int N, int first, int location[], int stype[])
{
dst.resize(N,vector<int>(N,-1));
location[0]=first;
stype[0]=1;
if (N==1) return;
vector<pair<int,int>> arr;
for (int i = 1; i < N; i++){
arr.push_back({dist(0,i),i});
}
sortarr(arr);
int node = arr[0].second;
location[node]=location[0]+dist(0,node);
stype[node]=2;
pair<int,int> nod2 = {dist(0,node),0};
for (int i = 0; i < N; ++i)
{
if (i==node) continue;
nod2=min(nod2,{dist(i,node),i});
}
int orta = nod2.second;
location[orta]=location[node]-dist(node,orta);
stype[orta]=1;
pair<int,int> mava = {location[node],node};
pair<int,int> miva = {location[orta],orta};
for (int i = 0; i < N; i++){
if (i==orta || i==node) continue;
if (dist(node,i)==dist(i,orta)+dist(orta,node)){
stype[i]=2;
location[i]=location[orta]+dist(orta,i);
}
if (dist(orta,i)==dist(i,node)+dist(node,orta)){
stype[i]=1;
location[i]=location[node]-dist(node,i);
}
if (stype[i]==2){
mava=max(mava,{location[i],i});
}
if (stype[i]==1){
miva=min(miva,{location[i],i});
}
}
for (int i = 0; i < N; ++i)
{
if (stype[i]!=0) continue;
if (dist(i,mava.second)<dist(i,miva.second)){
stype[i]=1;
location[i]=mava.first-dist(i,mava.second);
}
else {
stype[i]=2;
location[i]=miva.first+dist(i,miva.second);
}
}
}
Compilation message (stderr)
rail.cpp:1: warning: ignoring '#pragma optimize ' [-Wunknown-pragmas]
1 | #pragma optimize("Bismillahirrahmanirrahim")
|
# | 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... |