이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <cstdio>
int n,m;
int x[100010];
int y[100010];
int abs(int x){ return x>0?x:-x; }
long long sum(int *axis, int pos){
int i;
long long ret=0;
for(i=0;i<m;++i) ret+=abs(axis[i]-pos);
return ret;
}
long long min(long long a, long long b){ return a>b?b:a; }
int min(int a,int b){ return a>b?b:a; }
long long find(int *axis){
int l=1, a=min(2,n), b=min(3,n), r=n;
while(l+3<r){
a=(l*2+r)/3;
b=(l+r*2)/3;
if(sum(axis,a)>sum(axis,b)) l=a;
else r=b;
}
a=(l*2+r)/3;
b=(l+r*2)/3;
return min(min(sum(axis,l), sum(axis,a)), min(sum(axis,b), sum(axis,r)));
}
int main()
{
scanf("%d%d",&n,&m);
int i;
for(i=0;i<m;i++) scanf("%d%d",x+i,y+i);
printf("%lld\n",find(x)+find(y));
return 0;
}
# | 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... |
# | 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... |