Pagini recente » Cod sursa (job #3125654) | Cod sursa (job #1964199) | Cod sursa (job #2091439) | Cod sursa (job #2407008) | Cod sursa (job #125138)
Cod sursa(job #125138)
#include<stdio.h>
long int n,i,x[50001],y[50001],z[50001],a[50001],s[50001],min,sol,aux;
void swap(long int i1,long int i2);
void heapdown(long int ic,long int nc);
int main()
{
FILE *f,*g;f=fopen("inundatii.in","r");g=fopen("inundatii.out","w");
fscanf(f,"%ld",&n);
for(i=1;i<=n;i++)fscanf(f,"%ld%ld%ld",&x[i],&y[i],&z[i]);
for(i=1;i<=n;i++)a[i]=x[i]-i+1;
for(i=n/2;i>=1;i--)heapdown(i,n);
for(i=n;i>=1;i--){swap(1,i);heapdown(1,i-1);}
for(i=1;i<=n;i++)s[i]=s[i-1]+a[i];
min=s[n]-2*s[1]+(2-n)*a[1];
for(i=1;i<=n;i++)
if((s[n]-2*s[i]+(2*i-n)*a[i])<min)
min=s[n]-2*s[i]+(2*i-n)*a[i];
sol=sol+min;
for(i=1;i<=n;i++)a[i]=y[i]-i+1;
for(i=n/2;i>=1;i--)heapdown(i,n);
for(i=n;i>=1;i--){swap(1,i);heapdown(1,i-1);}
for(i=1;i<=n;i++)s[i]=s[i-1]+a[i];
min=s[n]-2*s[1]+(2-n)*a[1];
for(i=1;i<=n;i++)
if((s[n]-2*s[i]+(2*i-n)*a[i])<min)
min=s[n]-2*s[i]+(2*i-n)*a[i];
sol=sol+min;
for(i=1;i<=n;i++)a[i]=z[i]-i+1;
for(i=n/2;i>=1;i--)heapdown(i,n);
for(i=n;i>=1;i--){swap(1,i);heapdown(1,i-1);}
for(i=1;i<=n;i++)s[i]=s[i-1]+a[i];
min=s[n]-2*s[1]+(2-n)*a[1];
for(i=1;i<=n;i++)
if((s[n]-2*s[i]+(2*i-n)*a[i])<min)
min=s[n]-2*s[i]+(2*i-n)*a[i];
sol=sol+min;
fprintf(g,"%ld\n",sol);
fcloseall();
return 0;
}
void swap(long int i1,long int i2)
{
aux=a[i1];a[i1]=a[i2];a[i2]=aux;
}
void heapdown(long int ic,long int nc)
{
long int is,is1;
is=2*ic;is1=2*ic+1;
if(is>nc)return;
if(is<nc)if(a[is1]>a[is])is=is1;
if(a[is]>a[ic]){swap(is,ic);heapdown(is,nc);}
}