이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<stdio.h>
#include<algorithm>
using namespace std;
int ar[100001];
struct pp{
int x;
double y;
}st[100001];
long long cnt=0,s=0,ans=0,ans2=0;
long long ab(long long k){
if(k<0) return -k;
return k;
}
bool cmp(struct pp a,struct pp b){
return a.y<b.y;
}
int main()
{
int i,n,t1,t2;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&ar[i]);
if(i!=0){
st[i].x=i;
st[i].y=(double)ar[i]/i;
cnt+=i;
}
}
sort(st+1,st+n,cmp);
if(cnt%2==1){
for(i=1;i<n;i++){
s+=st[i].x;
if(s>=(cnt+1)/2){
t1=(int)st[i].y;
t2=(int)st[i].y+1;
break;
}
}
}
else{
for(i=1;i<n;i++){
s+=st[i].x;
if(s>=cnt/2){
t1=(int)st[i].y;
t2=(int)st[i].y+1;
break;
}
}
}
for(i=1;i<n;i++) ans+=ab((long long)ar[i]-(long long)i*t1);
for(i=1;i<n;i++) ans2+=ab((long long)ar[i]-(long long)i*t2);
if(ans2<ans) printf("%lld",ans2);
else printf("%lld",ans);
}
# | 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... |