比赛 20110729 评测结果 AAAAAAAAAAAA
题目名称 最后的利益 最终得分 100
用户昵称 kaaala 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-07-29 09:24:06
显示代码纯文本
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<string>
#include<algorithm>

using namespace std;

long a[10001][5],n,m,ans;

void sort1(long x,long y)
{
	long i,j,k;
	i=x;
	j=y;
	k=a[(x+y)/2][2];
	while(i<=j)
	{
		while(a[i][2]<k)
			i++;
		while(a[j][2]>k)
			j--;
		if(i<=j)
		{
			swap(a[i][2],a[j][2]);
			swap(a[i][1],a[j][1]);
			i++;
			j--;
		}
	}
	if(x<j)
		sort1(x,j);
	if(i<y)
		sort1(i,y);
}

int main()
{
	int i,j;
	freopen("9cwy.in","r",stdin);
	freopen("9cwy.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%d%d",&a[i][1],&a[i][2]);
	sort1(1,n);
	for(i=1;i<=n;i++)
	{
		a[i][3]=a[i][2]-a[i][1];
		a[i][4]=0;
	}
	a[n][4]=a[n][3];
	for(i=n-1;i>=1;i--)
	{
		for(j=i;j<=n;j++)
			if(a[i][2]<=a[j][1])
				if(a[j][4]+a[i][3]>a[i][4])
					a[i][4]=a[j][4]+a[i][3];
		if(a[i][4]==0)
			a[i][4]=a[i][3];
	}
	ans=0;
	for(i=1;i<=n;i++)
		if(a[i][4]>ans)
			ans=a[i][4];
	printf("%d",ans);
	return 0;
}