Pagini recente » Cod sursa (job #2694729) | Cod sursa (job #2368443) | Cod sursa (job #2369348) | Cod sursa (job #2156117) | Cod sursa (job #2707874)
#include <algorithm>
#include <stdio.h>
#define MAX 2001
#define INF -1
int n, k, maxx = INF;
struct Andrei{
int t, p;
} v[ MAX ];
bool cmp( const Andrei &A, const Andrei &B ){
return ( A.t < B.t );
}
int my_max( int a, int b ){
if( a >= b )
return a;
return b;
}
int main()
{
FILE *fin = fopen( "carnati.in", "r" );
fscanf( fin, "%d %d", &n, &k );
for( int i = 1; i <= n; i++ )
fscanf( fin, "%d %d", &v[ i ].t, &v[ i ].p );
fclose( fin );
v[ 0 ].p = v[ 0 ].t = INF;
std::sort( v + 1, v + n + 1, cmp );
for( int i = 1; i <= n; i++ ){
int l = 0, ant = 0;
for( int j = 1; j <= n; j++ )
if( v[ i ].p <= v[ j ].p ){
l = my_max( l + v[ i ].p - k * ( v[ j ].t - v[ ant ].t ), v[ i ].p - k );
if( maxx < l )
maxx = l;
ant = j;
}
}
FILE *fout = fopen( "carnati.out", "w" );
fprintf( fout, "%d\n", maxx );
fclose( fout );
return 0;
}