做的时候第一次还很蠢的累加了==
其实就是排个序啦,如果前面的龙打不赢,后面的更不可能了,如果打赢了前面的龙,才会得到更多加成去打后面的~
记得当时这道题跪了这跪那,结果似乎做了两个小时了。。
于是,训练赛。。
编码能力不忍直视!一定要加油!
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct dra
{
int x,y;
};
dra p[1010];
bool cmp(const dra &d1, const dra &d2)
{
if(d1.x<d2.x) return true;
else
{
if(d1.x==d2.x)
{
if(d1.y>d2.y)return true;
}
}
return false;
}
int main()
{
int s,n;
int flag[1010],cnt;
while(scanf("%d%d",&s,&n)==2)
{
cnt=0;
for(int i=0;i<n;i++)
{
scanf("%d%d",&p[i].x,&p[i].y);
}
sort(p,p+n,cmp);
for(int i=0;i<n;i++)
{
if(s<=p[i].x)
{
printf("NO\n");
cnt++;
break;
}
else{
s=s+p[i].y;
}
}
if(cnt==0)printf("YES\n");
}
return 0;
}
/*
55 4
12 34
12 55
56 3
2 3
*/