Pagini recente » Cod sursa (job #307420) | Cod sursa (job #1552932) | Cod sursa (job #989075) | Cod sursa (job #932851) | Cod sursa (job #1401735)
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream in("carnati.in");
ofstream out("carnati.out");
struct CLIENT {
int t,p,c;
};
const int NMAX = 2000;
bool cmp( CLIENT A, CLIENT B ) {
return ( A.t < B.t );
}
CLIENT v[NMAX+2];
int d[NMAX+2];
int N, C, Ans = - ( 1 << 30 );
int main() {
in >> N >> C;
for( int i = 1; i <= N; ++i ) in >> v[i].t >> v[i].p;
sort( v+1, v+N+1, cmp );
for( int i = 1; i <= N; ++i ) v[i].c = ( v[i].t - v[i-1].t ) * C;
for( int i = 1; i <= N; ++i ) {
memset( d, 0, sizeof(d) );
int PR = v[i].p;
for( int i = 1; i <= N; ++i ) {
if( PR <= v[i].p ) {
d[i] = max( PR - C , d[i-1] - v[i].c + PR );
}
else {
d[i] = max( -C, d[i-1] - v[i].c );
}
}
Ans = max( Ans, *max_element(d+1, d+N+1) );
}
out << Ans << '\n';
return 0;
}