제출 #14727

#제출 시각아이디문제언어결과실행 시간메모리
14727gs13068철로 (IOI14_rail)C++98
30 / 100
145 ms788 KiB
#include "rail.h"
#include <algorithm>

std::pair<int,int> a[5555];

void findLocation(int n,int fir,int loc[],int stp[])
{
	int i,j,l,r,ld,rd;
    loc[0]=fir;
    stp[0]=1;
    if(n==1)return;
    a[0].first=0;
    a[0].second=0;
	for(i=1;i<n;i++)
	{
        a[i].first=getDistance(0,i);
        a[i].second=i;
	}
    std::sort(a+1,a+n);
    loc[a[1].second]=loc[0]+a[1].first;
    stp[a[1].second]=2;
    l=0;r=a[1].second;
    for(i=2;i<n;i++)
	{
		ld=getDistance(l,a[i].second);
		rd=getDistance(r,a[i].second);
		for(j=0;j<i;j++)if(stp[a[j].second]==1&&loc[a[j].second]<loc[l]+ld&&loc[r]-loc[a[j].second]+loc[l]+ld-loc[a[j].second]==rd)break;
        if(j<i)
		{
            loc[a[i].second]=loc[l]+ld;
            stp[a[i].second]=2;
            if(loc[a[i].second]>loc[r])r=a[i].second;
		}
		else
		{
			loc[a[i].second]=loc[r]-rd;
			stp[a[i].second]=1;
			if(loc[a[i].second]<loc[l])l=a[i].second;
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...