Pagini recente » Cod sursa (job #736742) | Cod sursa (job #2209945) | Cod sursa (job #1672949) | Cod sursa (job #1004138) | Cod sursa (job #234744)
Cod sursa(job #234744)
#include <stdio.h>
int n,i,j,Best[100000],b[100000],a[100000],maxim,x,y,frecv[100000];
char ch[30];
int max(int a,int b)
{
if (a>b)
return a;
else
return b;
}
void qsort(long int l, long int r)
{
long int x,y;
i=l;
j=r;
x=a[(l+r)>>1];
do
{
while ((a[i]<x)&&(i<n)) ++i;
while ((x<a[j])&&(j>1)) --j;
if (i<=j)
{
y=a[i];
a[i]=a[j];
a[j]=y;
y=b[i];
b[i]=b[j];
b[j]=y;
++i;
--j;
}
}
while (i<=j);
if (l<j) qsort(l,j);
if (i<r) qsort(i,r);
}
int main()
{
freopen("heavymetal.in","rt",stdin);
scanf("%d", &n);
//freopen("heavymetal.out","wt",stdout);
gets(ch);
for (i=1;i<=n;++i)
{
// scanf("%d %d", &a[i],&b[i]);
gets(ch);
x=y=j=0;
while (ch[j]!=' ')
{
x=x*10+ch[j]-'0';
j++;
}
j++;
while (ch[j])
{
y=y*10+ch[j]-'0';
j++;
}
a[i]=x;
b[i]=y;
// printf("%d %d\n", x,y);
maxim=max(maxim,b[i]);
}
qsort(1,n);
for (i=1;i<=maxim;++i)
{
Best[i]=Best[i-1];
frecv[b[i]-a[i]]++;
for (j=1;j<=maxim;++j)
if (b[j]==i)
Best[i]=max(Best[i],Best[a[j]]+(b[j]-a[j]));
}
freopen("heavymetal.out","wt",stdout);
printf("%ld", Best[maxim]);
return 0;
}