Pagini recente » Cod sursa (job #14722) | Cod sursa (job #73654) | Cod sursa (job #645239) | Cod sursa (job #2933317) | Cod sursa (job #1259081)
#include <stdio.h>
long long max(long long a,long long b)
{
if(a>b) return a;
return b;
}
long long n,t[2001];
long long c[2001],p,old,maxs,news;
long long abs(long long a)
{
if(a<0)return -a;
return a;
}
void sorts()
{
int inv;
long long aux;
do
{
inv = 0;
for(int i = 0 ;i <n-1;i++)
if(t[i]>t[i+1])
{
inv =1;
aux = t[i];
t[i] = t[i+1];
t[i+1] = aux;
aux = c[i];
c[i] = c[i+1];
c[i+1] = aux;
}
}while(inv);
}
int main()
{
FILE*f =fopen("carnati.in","r");
fscanf(f,"%d%d",&n,&p);
for(int i = 0 ;i<n;i++)
fscanf(f,"%d%d",&t[i],&c[i]);
fclose(f);
sorts();
long y = 0;
for(int i = 0 ;i<n;i++)
{
old = news = 0;
for(int j = 0 ;j<n;j++)
{
if(c[j]>=c[i]) y = c[i];
else y = 0;
news = old -abs(t[j]-t[j-1])*p+y;
if(news < y-p) news = y-p;
if(news >= maxs) maxs = news;
old = news;
}
}
FILE * g = fopen("carnati.out","w");
fprintf(g,"%d",maxs);
fclose(g);
return 0;
}