Pagini recente » Borderou de evaluare (job #2893404) | Cod sursa (job #728304) | Borderou de evaluare (job #667079) | Cod sursa (job #1970655) | Cod sursa (job #3232737)
#include <iostream>
#include <fstream>
using namespace std;
#define nmax 50000
int x[nmax], y[nmax], z[nmax], n;
int fct( int v[] ) {
int i, rez = 0, minn, j1, j2, j;
for( i = 0; i < n; i++ ) {
minn = v[i];
for( j = i + 1; j < n; j++ )
minn = min( minn, v[j] );
rez += v[i] - minn;
v[i] = minn;
}
//cout << rez << " ";
for( i = 1; i < n; i++ ) {
if( v[i] == v[i - 1] ) {
for( j1 = i - 1; j1 > 0; j1-- ) {
if( v[j1] > v[j1 - 1] + 1 )
break;
}
for( j2 = i + 1; j2 < n; j2++ ) {
if( v[j2] > v[j2 - 1] + 1 )
break;
}
rez += min( i - j1, j2 - i);
}
}
//cout << rez << "\n";
return rez;
}
int main()
{
int i, rez;
ifstream cin("inundatii.in");
ofstream cout("inundatii.out");
cin >> n;
for( i = 0; i < n; i++ )
cin >> x[i] >> y[i] >> z[i];
rez = fct( x ) + fct( y ) + fct( z );;
cout << rez;
return 0;
}