#include <stdio.h>
int data[1024][2];
int main()
{
int s, n;
scanf("%d %d", &s, &n);
int i;
for(i=0; i<n; ++i)
{
scanf("%d %d", &data[i][0], &data[i][1]);
}
int temp[1][2];
int j;
for(i=0; i<(n-1); ++i)
{
for(j=i+1; j<n; ++j)
{
if(data[j][0]<data[i][0])
{
temp[0][0]=data[i][0];
temp[0][1]=data[i][1];
data[i][0]=data[j][0];
data[i][1]=data[j][1];
data[j][0]=temp[0][0];
data[j][1]=temp[0][1];
}
}
}
for(i=0; i<n; ++i)
{
//printf("-------------------------------------------------------------\n");
//printf("s=%d, data[%d][%d]=%d.\n", s, i, 0, data[i][0]);
//printf("-------------------------------------------------------------\n");
if(s>data[i][0])
{
s+=data[i][1];
}
else
break;
}
//printf("i=%d.\n", i);
if(i==n)
printf("YES\n");
else
printf("NO\n");
return 0;
}
@这道题先进行升序排序,然后逐一遍历排序后的数组元素,如果被访问的数组元素符合题目条件,则继续访问下一个数组元素并对其进行判断,如此循环;如果不能则停止遍历。
posted on
浙公网安备 33010602011771号