Pagini recente » Cod sursa (job #3061) | Cod sursa (job #2806899) | Cod sursa (job #2486900) | Cod sursa (job #538648) | Cod sursa (job #1003677)
#include <fstream>
#include<cstdio>
using namespace std;
FILE *in,*out;
int mat[2005][5];
int main()
{
in=fopen("carnati.in","r");
out=fopen("carnati.out","w");
int n,p,t,i,j,x,mam=-999,pmam,c,dr,st,sum;
fscanf(in,"%d%d",&n,&c);
for(i=1;i<=n;i++)
fscanf(in,"%d%d",&mat[i][1],&mat[i][2]);
x=n;
for(i=1;i<=n;i++)
{
mam=mat[1][1];
pmam=1;
for(j=1;j<=x;j++)
{
if(mat[j][1]>mam)
{
mam=mat[j][1];
pmam=j;
}
}
x--;
mat[pmam][1]=mat[x+1][1];
mat[x+1][1]=mam;
}
mam=mat[1][2]-c;
pmam=mat[1][2]-c;
p=mat[1][2];
st=1;
dr=1;
for(i=2;i<=n;i++)
{
sum=0;
dr++;
pmam=pmam-c*(mat[i][1]-mat[i-1][1]);
for(j=st;j<=dr;j++)
{
if(mat[j][2]>=mat[i][2])
{
sum=sum+mat[i][2];
}
}
sum=sum-c*(mat[dr][1]-mat[st][1]+1);
if(sum>pmam)
{
pmam=sum;
p=mat[i][2];
}
else
{
if((mat[i][2]>=p) && (p!=mat[i][2]))
pmam=pmam+p;
}
if(pmam>mam)
mam=pmam;
if((pmam<mat[i][2]) && (mat[i][1]!=mat[i-1][1]))
{
pmam=mat[i][2]-c;
st=i;
dr=i;
p=mat[i][2];
}
if(pmam>mam)
mam=pmam;
}
fprintf(out,"%d",mam);
return 0;
}