比赛 20120806 评测结果 AAAAAAAAAA
题目名称 环保绿化 最终得分 100
用户昵称 feng 运行时间 0.084 s
代码语言 C++ 内存使用 0.66 MiB
提交时间 2012-08-06 11:53:15
显示代码纯文本
#include<cstdio>
using namespace std;
int a[30003],b[30003],c[30003];
bool f[30003];
int i,j,k,n,h;
void swap(int a,int b){
	int tmp;
	tmp=a;
	a=b;
	b=tmp;
}
void qsorts(int l,int r){
	int i=l,j=r,mid=(l+r)/2,s=a[mid],x=b[mid],tmp;
	while (i<=j){
		while ((b[i]<x)and(i<n)) i++;
		while ((b[j]>x)and(j>0)) j--;
		if (i<=j){
			tmp=a[i];
			a[i]=a[j];
			a[j]=tmp;
			
			tmp=b[i];
			b[i]=b[j];
			b[j]=tmp;

			tmp=c[i];
			c[i]=c[j];
			c[j]=tmp;

			i++;
			j--;
		}
	}
	if (i<r) qsorts(i,r);
	if (j>l) qsorts(l,j);
}
int main()
{
	freopen("trees.in","r",stdin);
	freopen("trees.out","w",stdout);
	scanf("%d",&n);
	scanf("%d",&h);
	for (i=1;i<=h;i++)
		scanf("%d%d%d",&a[i],&b[i],&c[i]);
	qsorts(1,h);
	for (i=1;i<=n;i++){
		k=0;
		for (j=a[i];j<=b[i];j++)
			if (f[j]) k++;
		if (k>=c[i]) 
			continue;
		for (j=b[i];j>=a[i];j--){
			if (!f[j]){
				k++;
				f[j]=true;
			}
			if (k==c[i]) 
				break;
		}
	}
	k=0;
	for (i=1;i<=n;i++)
		if (f[i]) k++;
	printf("%d\n",k);
	return 0;
}