Cod sursa(job #2538861)

Utilizator bogdi1bogdan bancuta bogdi1 Data 5 februarie 2020 11:36:49
Problema Inundatii Scor 100
Compilator cpp-64 Status done
Runda simulare_miri Marime 2.34 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int v1[50005];
int v2[50005];
int v3[50005];
int main()
{   freopen("inundatii.in", "r", stdin);
    freopen("inundatii.out", "w", stdout);
    int n,i,j,nr;
    long long sum,sol=0,minn;
    scanf("%d", &n);
    for(i=1; i<=n; i++)
        scanf("%d%d%d", &v1[i], &v2[i], &v3[i]);
    if(n%2==1){
        nr=v1[n/2+1];
        for(j=nr-1,i=n/2; i>=1; i--,j--)
            sol+=abs(v1[i]-j);
        for(j=nr+1,i=n/2+2; i<=n; i++,j++)
            sol+=abs(v1[i]-j);
    }
    if(n%2==0){
        nr=v1[n/2];
        sum=0;
        for(j=nr-1,i=n/2-1; i>=1; i--,j--)
            sum+=abs(v1[i]-j);
        for(j=nr+1,i=n/2+1; i<=n; i++,j++)
            sum+=abs(v1[i]-j);
        minn=sum;
        nr=v1[n/2+1];
        sum=0;
        for(j=nr-1,i=n/2; i>=1; i--,j--)
            sum+=abs(v1[i]-j);
        for(j=nr+1,i=n/2+2; i<=n; i++,j++)
            sum+=abs(v1[i]-j);
        minn=min(sum,minn);
        sol+=minn;
    }
    if(n%2==1){
        nr=v2[n/2+1];
        for(j=nr-1,i=n/2; i>=1; i--,j--)
            sol+=abs(v2[i]-j);
        for(j=nr+1,i=n/2+2; i<=n; i++,j++)
            sol+=abs(v2[i]-j);
    }
    if(n%2==0){
        nr=v2[n/2];
        sum=0;
        for(j=nr-1,i=n/2-1; i>=1; i--,j--)
            sum+=abs(v2[i]-j);
        for(j=nr+1,i=n/2+1; i<=n; i++,j++)
            sum+=abs(v2[i]-j);
        minn=sum;
        nr=v2[n/2+1];
        sum=0;
        for(j=nr-1,i=n/2; i>=1; i--,j--)
            sum+=abs(v2[i]-j);
        for(j=nr+1,i=n/2+2; i<=n; i++,j++)
            sum+=abs(v2[i]-j);
        minn=min(sum,minn);
        sol+=minn;
    }
    if(n%2==1){
        nr=v3[n/2+1];
        for(j=nr-1,i=n/2; i>=1; i--,j--)
            sol+=abs(v3[i]-j);
        for(j=nr+1,i=n/2+2; i<=n; i++,j++)
            sol+=abs(v3[i]-j);
    }
    if(n%2==0){
        nr=v3[n/2];
        sum=0;
        for(j=nr-1,i=n/2-1; i>=1; i--,j--)
            sum+=abs(v3[i]-j);
        for(j=nr+1,i=n/2+1; i<=n; i++,j++)
            sum+=abs(v3[i]-j);
        minn=sum;
        nr=v3[n/2+1];
        sum=0;
        for(j=nr-1,i=n/2; i>=1; i--,j--)
            sum+=abs(v3[i]-j);
        for(j=nr+1,i=n/2+2; i<=n; i++,j++)
            sum+=abs(v3[i]-j);
        minn=min(sum,minn);
        sol+=minn;
    }
    printf("%lld", sol);
    return 0;
}