Submission #14124

#TimeUsernameProblemLanguageResultExecution timeMemory
14124ggoh정전 (OJUZ10_blackout)C++98
100 / 100
49 ms3584 KiB
#include<cstdio> #include<algorithm> #include<vector> #include<queue> #include<cstring> long long a,b,i,j,t,p,q,m,n,s,x[160001],y[160001]; main() { scanf("%lld%lld",&a,&b); for(i=0;i<a;i++) { scanf("%lld",&x[i]); } std::sort(x,x+a); for(i=0;i<a-1;i++) { p=q=0; if(i-1>=0) { if(x[i]-x[i-1]<b)p=b-(x[i]-x[i-1]); } if(i+2<a) { if(x[i+2]-x[i+1]<b)q=b-(x[i+2]-x[i+1]); } if(p+q>=x[i+1]-x[i])s+=x[i+1]-x[i]; else if(b>=x[i+1]-x[i]) { s+=x[i+1]-x[i]; } else if(2*b<=x[i+1]-x[i])s+=p+q; else { t=b*2-(x[i+1]-x[i]); m=x[i]+b-t; n=x[i]+b; p=p+x[i]; q=x[i+1]-q; if(p<m&&n<q) { s+=(p-x[i]+x[i+1]-q+t); } else if(n<=p||q<=m) { s+=(p-x[i]+x[i+1]-q); } else if(m<=p&&q<=n) { s+=x[i+1]-x[i]; } else if(m<=p&&p<=n) { s+=(n-x[i]+x[i+1]-q); } else if(m<=q&&q<=n) { s+=(p-x[i]+x[i+1]-m); } } } if(x[1]-x[0]<b) { s+=b-(x[1]-x[0]); } if(x[a-1]-x[a-2]<b) { s+=b-(x[a-1]-x[a-2]); } if(a==1)printf("0"); else printf("%lld",s); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...