Cod sursa(job #2538881)

Utilizator stefan_creastaStefan Creasta stefan_creasta Data 5 februarie 2020 11:59:09
Problema Inundatii Scor 100
Compilator cpp-64 Status done
Runda simulare_miri Marime 1.36 kb
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 50005;
long long v[6][NMAX];

int main() {
    int n;
    freopen("inundatii.in", "r", stdin);
    freopen("inundatii.out", "w", stdout);
    scanf("%d", &n);
    for(int i = 1; i <= n; i++) {
        scanf("%lld%lld%lld", &v[1][i], &v[2][i], &v[3][i]);
    }
    long long solt = 0;
    for(int k = 1; k <= 3; k++) {
        long long sol = 1000000000000000;
        int p = n / 2 + 1;
        long long solc = 0;
        for(int sc = 1, i = p - 1; i > 0; i--, sc++) {
            long long nr = v[k][p] - sc;
            solc += abs(nr - v[k][i]);
        }
        for(int sc = 1, i = p + 1; i <= n; i++, sc++) {
            long long nr = v[k][p] + sc;
            solc += abs(nr - v[k][i]);
        }
        sol = min(sol, solc);
        if(n % 2 == 0) {
            p = n / 2;
            long long solc = 0;
            for(int sc = 1, i = p - 1; i > 0; i--, sc++) {
                long long nr = v[k][p] - sc;
                solc += abs(nr - v[k][i]);
            }
            for(int sc = 1, i = p + 1; i <= n; i++, sc++) {
                long long nr = v[k][p] + sc;
                solc += abs(nr - v[k][i]);
            }
            sol = min(sol, solc);
        }
        solt += sol;
    }
    printf("%lld\n", solt);
    return 0;
}