1. 程式人生 > >POJ1723(中位數)

POJ1723(中位數)

IT tdi i++ sin print poj include ons clu

x坐標排序後-相應第為第幾個

若本來就相鄰減後值相同

如 2 3 4 8 9

減後 1 1 1 4 4

所以往中位數移就好

#include<cstdio>
#include<algorithm>
using namespace std;

const int maxn=10000+10;

int y[maxn];
int x[maxn];

int main(){
    int n;
    int ans1=0,ans2=0;
    scanf("%d",&n);
    for (int i=1;i<=n;i++){
        scanf("%d",&x[i]);
        scanf(
"%d",&y[i]); } sort(x+1,x+1+n); sort(y+1,y+1+n); int mid=y[(n>>1)+1]; for (int i=1;i<=n;i++){ ans1+=abs(y[i]-mid); } for (int i=1;i<=n;i++) x[i]-=i; sort(x+1,x+1+n); mid=x[(n>>1)+1]; for (int i=1;i<=n;i++) ans2+=abs(x[i]-mid); printf(
"%d\n",ans1+ans2); return 0; }

POJ1723(中位數)