Pagini recente » Cod sursa (job #507266) | Cod sursa (job #2113924) | Cod sursa (job #76365) | Cod sursa (job #586811) | Cod sursa (job #1491322)
#include<cstdio>
struct cord{
int x;
int y;
int z;
}v[50100];
int n,i,j,a,b,s;
FILE *f,*g;
int modul(int a){
if(a<0)
return -a;
return a;
}
int minim(int a,int b){
if(a<b)
return a;
return b;
}
int main(){
f=fopen("inundatii.in","r");
g=fopen("inundatii.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d%d%d",&v[i].x,&v[i].y,&v[i].z);
}
if(v[n].x<n){
s+=n-v[n].x-1;
v[n].x=n-1;
}
if(v[n].y<n){
s+=n-v[n].y-1;
v[n].y=n-1;
}
if(v[n].z<n){
s+=n-v[n].z-1;
v[n].z=n-1;
}
for(i=n-1;i>=1;i--){
a=modul(v[i].x-v[i+1].x)+modul(v[i].y-v[i+1].y)+modul(v[i].z-v[i+1].z)+3;
s+=a;
if(v[i].x>v[i-1].x && i>1 ){
b=minim( a, v[i].x-v[i-1].x+1 );
v[i].x-=b;
a-=b;
}
else if(v[i].x<=v[i-1].x && i>1 ){
b=minim( a, v[i-1].x-v[i].x+1 );
// v[i].x-=b;
// a-=b;
}
if(v[i].y>v[i-1].y && i>1 ){
b=minim( a, v[i].y-v[i-1].y+1 );
v[i].y-=b;
a-=b;
}
else if(v[i].y<=v[i-1].y && i>1 ){
b=minim( a, v[i-1].y-v[i].y+1 );
// v[i].y-=b;
// a-=b;
}
if(v[i].z>v[i-1].z && i>1 ){
b=minim( a, v[i].z-v[i-1].z+1 );
v[i].z-=b;
a-=b;
}
else if(v[i].z<=v[i-1].z && i>1 ){
b=minim( a, v[i-1].z-v[i].z+1 );
// v[i].z-=b;
// a-=b;
}
}
fprintf(g,"%d",s);
fclose(f);
fclose(g);
return 0;
}