Pagini recente » Cod sursa (job #1724308) | Cod sursa (job #2493667) | Cod sursa (job #1924053) | Cod sursa (job #2318452) | Cod sursa (job #137342)
Cod sursa(job #137342)
#include <stdio.h>
struct ggg
{
int t,p;
};
typedef struct ggg pozis;
pozis a[2010];
int N,nr;
long max;
long S,k,suma[2010],K;
void citire()
{
freopen ("carnati.in","r",stdin);
scanf("%d%d",&N,&K);
int q,w;
for (int i=0;i<N;i++)
{
scanf("%d%d",&q,&w);
if (q>max)
max=q;
suma[q]+=w;
}
fclose(stdout);
}
/*void poz(int li,int ls,int &k,ggg a[2010])
{
int i=li,j=ls,i1=0,j1=-1,aux;
ggg c;
while (i<j)
{
if (a[i].t>a[j].t)
{
c=a[j];
a[j]=a[i];
a[i]=c;
aux=i1;
i1=-j1;
j1=-aux;
}
i=i+i1;
j=j+j1;
}
k=i;
}
void quick(int li,int ls)
{
if (li<ls)
{
poz(li,ls,k,a);
quick (li,k-1);
quick (k+1,ls);
}
}*/
int maxi (int a,int b)
{
if (a>b)
return a;
return b;
}
void maxim ()
{
int i=0;
long S1,poz;
while (suma[i]==0)
i++;
poz=i;
a[0].t=i;
a[0].p=suma[i];
nr=1;
for (i=poz+1;i<=max;i++)
if (suma[i]!=0)
{
a[nr].t=i;
a[nr].p=suma[i];
nr++;
}
}
void aflare()
{
int i,j,y,r;
max=0;
for (i=0;i<nr;i++)
for (j=0;j<nr-1;j++)
for (y=j+1;y<nr;y++)
{
int nr1=0,inc=-1,sf=-1;
for (r=j;r<y;r++)
if (a[r].p>=a[i].p)
{
nr1++;
sf=r;
if (inc==-1)
inc=r;
}
if (sf!=-1)
{
max=maxi(max,nr1*a[i].p-(a[sf].t-a[inc].t+1)*K);
}
}
freopen ("carnati.out","w",stdout);
printf("%ld\n",max);
fclose(stdout);
}
int main ()
{
citire();
maxim();
aflare();
return 0;
}