Pagini recente » Cod sursa (job #1674810) | Cod sursa (job #2704395) | Cod sursa (job #2527212) | Cod sursa (job #1928287) | Cod sursa (job #125143)
Cod sursa(job #125143)
#include<stdio.h>
#define LL long long
const int maxd = 4;
const int maxn = 50010;
LL sps[maxd][maxn];
LL a[maxd][maxn];
LL ans[maxd];
const LL inf = ((LL)1 << 60);
int i,j,n;
LL spd[maxd][maxn];
LL calc(int x)
{
LL aux;
if (i < n - i) aux = i * (i + 1) / 2 + (n - i) * (n - i - 1) / 2;
else aux = (LL) i * (i - 1) / 2 + (n - i) * (n - i + 1) / 2;
LL ans = (LL) sps[j][i] - x * i + (n - i + 1) * x - spd[j][i] + aux;
if (ans < 0) return inf;
return ans;
}
int main()
{
freopen("inundatii.in","r",stdin);
freopen("inundatii.out","w",stdout);
scanf("%d",&n);
for(i = 1;i <= n; ++i)
{
scanf("%d %d %d",&a[1][i],&a[2][i],&a[3][i]);
}
for(i = 1;i <= n; ++i)
{
sps[1][i] = sps[1][i - 1] + a[1][i];
sps[2][i] = sps[2][i - 1] + a[2][i];
sps[3][i] = sps[3][i - 1] + a[3][i];
}
for(i = n;i > 0; --i)
{
spd[1][i] = spd[1][i + 1] + a[1][i];
spd[2][i] = spd[2][i + 1] + a[2][i];
spd[3][i] = spd[3][i + 1] + a[3][i];
}
for(j = 1;j <= 3; ++j) ans[j] = inf;
for(i = 1;i <= n; ++i)
{
for(j = 1;j <= 3; ++j)
{
if (ans[j] > calc(a[j][i])) ans[j] = calc(a[j][i]);
}
}
printf("%lld\n",(LL)ans[1] + ans[2] + ans[3]);
return 0;
}