Cod sursa(job #1496576)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 5 octombrie 2015 10:54:46
Problema Inundatii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <algorithm>
#define nmax 50005
using namespace std;
int n,a[nmax],b[nmax],c[nmax];



inline int modul(int x)
{
    if (x<0)
        return -x;
    return x;
}
int ans(int x,int v[])
{
    int i,s=0;
    for (i=1;i<=n;i++)
        s+=modul(v[i]-x);
    return s;
}

int solve(int v[])
{
    int i;
    for (i=1;i<=n;i++)
        v[i]-=i;

    int a=n/2-1;
    int b=n/2;
    int c=n/2+1;

    int x=1<<30;

    if (a>=1&&a<=n)
        x=min(x,ans(v[a],v));
    if (b>=1&&b<=n)
        x=min(x,ans(v[b],v));
    if (c>=1&&c<=n)
        x=min(x,ans(v[c],v));

    return x;
}
int main()
{
    freopen("inundatii.in","r",stdin);
    freopen("inundatii.out","w",stdout);
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
        scanf("%d %d %d",&a[i],&b[i],&c[i]);
    printf("%d\n",solve(a)+solve(b)+solve(c));

    return 0;
}