52 lines
943 B
C++
52 lines
943 B
C++
#include<cstdio>
|
|
#include<cstring>
|
|
#include<cstdlib>
|
|
int g[101][4001];
|
|
int max(int x,int y)
|
|
{
|
|
if (x>y) return x;
|
|
else return y;
|
|
}
|
|
int main()
|
|
{
|
|
int i,j,d,n,p,s=0,t[101],f[101],h[101];
|
|
bool bo;
|
|
scanf("%d%d",&d,&n);
|
|
for(i=1;i<=n;i++)
|
|
{
|
|
scanf("%d%d%d",&t[i],&f[i],&h[i]);
|
|
s=s+f[i];
|
|
}
|
|
for(i=1;i<=n-1;i++)
|
|
for(j=i+1;j<=n;j++)
|
|
if (t[i]>t[j])
|
|
{
|
|
p=t[i];t[i]=t[j];t[j]=p;
|
|
p=f[i];f[i]=f[j];f[j]=p;
|
|
p=h[i];h[i]=h[j];h[j]=p;
|
|
}
|
|
memset(g,-127,sizeof(g));
|
|
g[0][10]=0;
|
|
for(i=1;i<=n;i++)
|
|
for(j=10;j<=10+s;j++)
|
|
if (j>=t[i])
|
|
{g[i][j+f[i]]=max(g[i][j+f[i]],g[i-1][j]);
|
|
g[i][j]=max(g[i-1][j]+h[i],g[i][j]);}
|
|
for(i=1;i<=n;i++)
|
|
{
|
|
bo=false;
|
|
for(j=10;j<=10+s;j++)
|
|
if (g[i][j]>=d)
|
|
{bo=true;break;}
|
|
if (bo)
|
|
{printf("%d",t[i]);exit(0);}
|
|
}
|
|
j=10;
|
|
for(i=1;i<=n;i++)
|
|
{
|
|
if (j<t[i]) {printf("%d",j);exit(0);}
|
|
j=j+f[i];
|
|
}
|
|
printf("%d",j);
|
|
}
|
|
|