Pagini recente » Cod sursa (job #40119) | Cod sursa (job #2491877) | Cod sursa (job #2392630) | Cod sursa (job #181707) | Cod sursa (job #808622)
Cod sursa(job #808622)
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("inundatii.in");
ofstream fout("inundatii.out");
long long minim;
long long total=0;
int main()
{
int n,x,y,z;
fin >> n;
int coord[3][50001];
long long distleft[50001];
long long distright[50001];
for (int i=0;i<n;i++)
{
fin >> x>> y >> z;
coord[0][n-i-1]=x;
coord[1][n-i-1]=y;
coord[2][n-i-1]=z;
}
for (int k=0;k<3;k++)
{
//cout << "k="<<k<<endl;
distleft[0] = 0;
for (int i=1;i<n;i++)
{
distleft[i] = distleft[i-1]+ i*(coord[k][i] - coord[k][i-1]);
}
distright[n-1] = 0;
for (int i=n-2;i>=0;i--)
{
//cout << "coord" << (coord[i])<<endl;
distright[i] = distright[i+1]+ ((n-2)-i+1)*(coord[k][i+1] - coord[k][i]);
}
minim = distleft[0]+distright[0]+ ((n-1)*(n)/2);
//cout << "distleft "<<distright[0] <<endl;
//cout << "i="<<i<<endl;
//cout << "left"<<distleft[i]<<" right"<<distright[i]<< " surplus"<< ((i)*(i+1)/2) +((n-i)*(n-i-1)/2)<<endl;
for (int i=1;i<n;i++)
{
minim = min(distleft[i]+distright[i]+ ((i)*(i+1)/2) + ((n-i)*(n-i-1)/2) , minim );
//cout << "i="<<i<<endl;
//cout << "left"<<distleft[i]<<" right"<<distright[i]<< " surplus"<< ((i)*(i+1)/2) +((n-i)*(n-i-1)/2)<<endl;
}
//cout << "bag "<<minim <<endl;
total += minim;
}
fout << total;
}