比赛 |
20110928 |
评测结果 |
AWAWAWWWWW |
题目名称 |
垃圾陷阱 |
最终得分 |
30 |
用户昵称 |
TBK |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2011-09-28 21:55:41 |
显示代码纯文本
#include <iostream>
#include <stdio.h>
using namespace std;
int a[100][3],b,c,d,l,m,s,t=10,r=0,k[100][2100];
bool bo[100][3000]={false},boo;
int main(void)
{
freopen ("well.in","r",stdin);
freopen ("well.out","w",stdout);
scanf("%d%d",&b,&c);
for (d=0;d<c;d++) scanf("%d%d%d",&a[d][0],&a[d][1],&a[d][2]);
r=0;
for (d=0;d<c;d++)
{
r=a[d][0];
boo=false;
if (d==0)
{
k[d][t+a[d][1]]=0;
k[d][t]=a[d][2];
if (r<=t)
{
boo=true;
bo[d][t+a[d][1]]=true;
}
if (r<=t)
{
boo=true;
bo[d][t]=true;
}
if (boo==false) break;
}
else
{
for (l=10;l<2100;l++)
if (bo[d-1][l]==true)
{
k[d][l+a[d][1]]+=k[d-1][l];
if (r<=l)
{
boo=true;
bo[d][l+a[d][1]]=true;
}
else bo[d][l+a[d][1]]=false;
m=k[d-1][l]+a[d][2];
if (m>k[d][l]) k[d][l]=m;
if (r<=l)
{
boo=true;
bo[d][l]=true;
}
else bo[d][l+a[d][1]]=false;
}
if (bo==false) break;
}
}
if (d==c)
{
s=101;
for (d=0;d<100;d++)
for (l=0;l<2100;l++)
if (bo[d][l]==true)
if ((k[d][l]>=b)&&(d<s)) s=d;
printf("%d",a[s][0]);
}
else
{
s=10;
for (d=0;d<100;d++)
{
t+=a[d][0];
if (t>s) break;
s+=a[d][1];
}
printf("%d",s);
}
fclose(stdin);
fclose(stdout);
return 0;
}