比赛 |
20110928 |
评测结果 |
C |
题目名称 |
垃圾陷阱 |
最终得分 |
0 |
用户昵称 |
belong.zmx |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2011-09-28 21:48:02 |
显示代码纯文本
#include <cstdlib>
#include <iostream>
#include <cstdio>
using namespace std;
int i,j,k,d,g,live,ans;
int t[101],h[101],l[101];
int f[101][3001];
int main()
{
freopen("well.in","r",stdin);
freopen("well.out","w",stdout);
scanf("%d%d\n",&d,&g);
for (i=1;i<=g;i++)
{
scanf("%d%d%d\n",&t[i],&l[i],&h[i]);
ans+=l[i];
}
memset(f,-1,sizeof(f));
live=10;
f[0][10]=0;
for (i=1;i<=g;i++)
{
for (j=0;j<=live;j++)
for (k=0;k<=i-1;k++)
{
if (f[k][j+t[i]-t[k]]>-1)
{
f[i][j]=f[k][j+t[i]-t[k]]+h[i];
f[i][j+l[i]]=f[k][j+t[i]-t[k]];
if (f[i][j]>=d)
{
ans=t[i];
goto fuck;
}
}
}
live+=l[i];
}
fuck:
printf("%d\n",ans);
return 0;
}