Submission #4950

#TimeUsernameProblemLanguageResultExecution timeMemory
4950hana5505막대기 (KOI13_game)C++98
100 / 100
92 ms6248 KiB
#include<stdio.h> #include<algorithm> using namespace std; struct pp{ int x,y; }ar[110001]; int xy[220001]; long long ans1[220001]={0,},an;//위 long long ans2[220001]={0,};//아래 bool cmp(struct pp a,struct pp b){ if(a.x==b.x) return a.y<b.y; return a.x<b.x; } long long mx(long long a,long long b){ if(a<b) return b; return a; } long long ab(long long k){ if(k<0) return -k; return k; } int main() { int n,l,i,j; long long kx,ky; scanf("%d %d",&n,&l); for(i=1;i<=n;i++){ scanf("%d %d",&ar[i].x,&ar[i].y); xy[i*2-1]=ar[i].x; xy[i*2]=ar[i].y; } sort(xy+1,xy+2*n+1); for(i=1;i<=n;i++){ j=lower_bound(xy+1,xy+2*n+1,ar[i].x)-xy; ar[i].x=j; j=lower_bound(xy+1,xy+2*n+1,ar[i].y)-xy; ar[i].y=j; } sort(ar+1,ar+n+1,cmp); for(i=1;i<=n;i++){ kx=ans1[ar[i].x]; ky=ans2[ar[i].y]; ans1[ar[i].x]=mx(ky+ab(xy[ar[i].x]-xy[ar[i].y])+l,ans1[ar[i].x]); ans2[ar[i].y]=mx(kx+ab(xy[ar[i].x]-xy[ar[i].y])+l,ans2[ar[i].y]); } for(i=1;i<=2*n;i++){ an=mx(an,mx(ans1[i],ans2[i])); } printf("%lld",an); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...