Pagini recente » Cod sursa (job #322374) | Cod sursa (job #2550505) | Cod sursa (job #1206399) | Cod sursa (job #2911692) | Cod sursa (job #155541)
Cod sursa(job #155541)
#include <stdio.h>
#include <stdlib.h>
struct ggg
{
long t,p;
};
typedef struct ggg pozis;
pozis a[2010];
long N,nr;
long S,k,suma[2010],K;
void citire()
{
freopen ("carnati.in","r",stdin);
scanf("%ld %ld",&N,&K);
for (int i=1;i<=N;i++)
scanf("%ld%ld",&a[i].t,&a[i].p);
fclose(stdout);
}
void maxim()
{
long maxim=0;
for (int i=1;i<=N;i++)
{
long S=0,poz=0,ok=0;
for (int k=1;k<=N;k++)
{
if (a[k].p>=a[i].p && ok==0)
{
ok=1;
S=a[i].p;
poz=a[k].t;
}
else
{
if (a[k].p>=a[i].p)
{
S+=a[i].p;
}
}
if (S-(a[k].t-poz+1)*K<=0)
{
S=0;
ok=0;
poz=0;
}
else
if (S-(a[k].t-poz+1)*K>maxim)
maxim=S-(a[k].t-poz+1)*K;
}
}
freopen ("carnati.out","w",stdout);
printf ("%ld\n",maxim);
fclose (stdout);
}
void poz (int li,int ls,int &k,pozis a[201])
{
int cc,i=li,j=ls,i1=0,j1=-1;
pozis c;
while (i<j)
{
if (a[i].t>a[j].t)
{
c=a[j];
a[j]=a[i];
a[i]=c;
cc=i1;
i1=-j1;
j1=-cc;
}
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);
}
}
void bule ()
{
int p=N,ok=1;
while (ok)
{
ok=0;
p--;
for (int i=1;i<=p;i++)
if (a[i].t>a[i+1].t)
{
pozis aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
ok=1;
}
}
}
int main ()
{
citire();
k=0;
// quick(1,N);
bule();
maxim();
return 0;
}