Cod sursa(job #1387921)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 14 martie 2015 20:57:17
Problema Tribute Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>
#include<algorithm>
#define N 50000
int x[N+1],y[N+1],sum[N+1];
int n;
int ans(int v[],int nr){
    int i;
    std::sort(v+1,v+1+n);
    for(i=1;i<=n;i++)
        sum[i]=sum[i-1]+v[i];
    int st=0,dr=0,min=N/10*N/10;
    for(i=0;i<=v[n]+nr;i++){
        while(st-1<n&&v[st]<i)
            st++;
        while(dr-1<n&&v[dr]<=i+nr)
            dr++;
        dr--,st--;
        if(i*st-sum[st]+sum[n]-sum[dr]-(i+nr)*(n-dr)<min)
            min=i*st-sum[st]+sum[n]-sum[dr]-(i+nr)*(n-dr);
    }
    return min;
}
int main(){
    FILE *fin,*fout;
    fin=fopen("tribute.in","r");
    fout=fopen("tribute.out","w");
    int x1,y1;
    fscanf(fin,"%d%d%d",&n,&x1,&y1);
    int i;
    for(i=1;i<=n;i++)
        fscanf(fin,"%d%d",&x[i],&y[i]);
    fprintf(fout,"%d",ans(x,x1)+ans(y,y1));
    return 0;
}