Cod sursa(job #2538782)

Utilizator MiricaMateiMirica Matei MiricaMatei Data 5 februarie 2020 09:02:29
Problema Inundatii Scor 100
Compilator cpp-64 Status done
Runda simulare_miri Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 500005;

int x[MAXN], y[MAXN], z[MAXN];
long long sx[MAXN], sy[MAXN], sz[MAXN];

long long cL(int i) {
  return -1LL * (i - 1) * (x[i] + y[i] + z[i]) + sx[i - 1] + sy[i - 1] + sz[i - 1] + 3LL * (i - 1) * i / 2;
}

long long cR(int i, int n) {
  return -(sx[n] - sx[i] + sy[n] - sy[i] + sz[n] - sz[i]) + 1LL * (n - i) * (x[i] + y[i] + z[i]) + 3LL * (n - i) * (n - i + 1) / 2;
}

int main() {
  freopen("inundatii.in", "r", stdin);
  freopen("inundatii.out", "w", stdout);

  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%d%d%d", &x[i], &y[i], &z[i]);
    sx[i] = sx[i - 1] + x[i];
    sy[i] = sy[i - 1] + y[i];
    sz[i] = sz[i - 1] + z[i];
  }

  long long ans = (1LL << 60);
  for (int i = 1; i <= n; ++i) {
    ans = min(ans, cL(i) + cR(i, n));
  }

  printf("%lld\n", ans);

  return 0;
}