http://acm.mipt.ru/judge/problems.pl?problem=004
给N个运动员,他们有质量m和力量s,如果mi>mj则有si>sj,现在要他们叠罗汉。强度为s的人最多能支撑质量和sum<=s。
注意条件:如果mi>mj则si>sj。这样就可以贪心了~~~
按照m为第一关键字,s为第二关键字,然后排序,之后一个一个叠罗汉就好了
代码:
function rd() return io.stdin:read("*n") end
n,a=rd(),{}
for i=1,n do
local ms={}
ms.m,ms.s=rd(),rd()
a[i]=ms
end
table.sort(a,function(x,y) return x.m~=y.m and x.m<y.m or x.s<y.s end)
ans,sum=0,0
for i=1,n do
if a[i].s >= sum then
sum = sum + a[i].m
ans = ans + 1
end
end
print (ans)