Pagini recente » Cod sursa (job #172774) | Cod sursa (job #574606) | Cod sursa (job #865043) | Cod sursa (job #2542645) | Cod sursa (job #392663)
Cod sursa(job #392663)
# include <fstream>
# include <iostream>
using namespace std;
int n, c, t[2003], p[2003], pmax=-1000000;
void afis (int v[], int n)
{
for (int i=1;i<=n;i++)
cout<<v[i]<<" ";
cout<<endl;
}
void read ()
{
ifstream fin ("carnati.in");
fin>>n>>c;
for (int i=1;i<=n;i++)
fin>>t[i]>>p[i];
}
void qsort (int st, int dr)
{
if (st<dr)
{
int i=st, j=dr, d=0, aux;
while (i<j)
{
if (t[i]>t[j])
{
aux=t[i];t[i]=t[j];t[j]=aux;
aux=p[i];p[i]=p[j];p[j]=aux;
d=1-d;
}
i+=d;
j-=1-d;
}
qsort (st, i-1);
qsort (i+1, dr);
}
}
void calcul (int p, int t[], int n)
{
int pr=p-c, tt=t[1];
for (int i=2;i<=n;i++)
{
if (pr+p-(t[i]-tt)*c>p-c)
pr=pr+p-(t[i]-tt)*c, tt=t[i];
else
pr=p-c, tt=t[i];
if (pr>pmax)
pmax=pr;
}
}
void solve ()
{
int x[2003], m;
for (int i=1;i<=n;i++)
{
m=0;
for (int j=1;j<=n;j++)
if (p[j]>=p[i])
x[++m]=t[j];
calcul (p[i], x, m);
}
}
int main ()
{
read ();
qsort (1, n);
solve ();
ofstream fout ("carnati.out");
fout<<pmax;
return 0;
}