记录编号 27746 评测结果 AWAWAWWAWA
题目名称 垃圾陷阱 最终得分 50
用户昵称 Gravatar苏轼 是否通过 未通过
代码语言 C++ 运行时间 0.004 s
提交时间 2011-09-29 11:12:53 内存使用 0.27 MiB
显示代码纯文本
#include<iostream>
#include<stdio.h>//freopen
#include<string.h>//?????????
#include<cstdlib>//?????????
#include<stdlib.h>//????????
#include<cstdlib>
#include<cstdio>
using namespace std;
int cmp(const void *a,const void *b);
int MAX=0;
int q[102];
int number,longth;//???????
struct hehe
{
	int t,h,l;//??????????????
}a[200];
void dp();//DP
int main()
{
	freopen ("well.in","r",stdin);
	freopen ("well.out","w",stdout);
	scanf("%d %d",&longth,&number);
	for (int i=0;i<number;i++)
	{
		scanf("%d %d %d\n",&a[i].t,&a[i].h,&a[i].l);
		MAX+=a[i].h;//????????????Β?о?ü?0
	}
	MAX+=10;
	qsort(&a[0],number,sizeof(a[0]),cmp);//???????????С??????
	int answer=0;//?Ξ???????
	q[0]=10;
	for (int i=0;i<number;i++)
	{
		answer=0;
        for(int j=longth; j>=0; j--)
		{
            if(q[j] >= a[i].t) 
			{
                if(j + a[i].l >= longth) 
				{
                    printf("%d\n", a[i].t);
					goto end;
                }
                if(q[j] > q[j+a[i].l])
                    q[j+a[i].l] = q[j];
                q[j] += a[i].h;
                answer = 1;
            }
        }
        if(!answer)
            break;
	}
	if (!answer)//????????????
	{
		int ji=10;//????10??P??
		for (int i=0;i<number;i++)
		{
			if (ji-a[i].l)//??????????????
			{
				ji=ji-a[i].l+a[i].h;
			}
		}
		cout<<ji;
	}
end:
	return 0;
}
int cmp(const void *a,const void *b)
{
	return ((hehe *)a)->t > ((hehe *)b)->t ? 1 : -1;//???????
}