https://cn.vjudge.net/problem/Gym-101933I
package javaacm;
import java.util.*;
import java.math.*;
import java.io.*;
public class Main {
public static void main(String [] argvs)
{
Scanner cin = new Scanner(System.in);
int n=cin.nextInt();
BigInteger s = cin.nextBigInteger();
String [] name =new String [n];
BigInteger[] id= new BigInteger[n];
Map<BigInteger,String> mp =new HashMap<BigInteger, String>();
Vector<BigInteger> vec = new Vector<BigInteger>();
for(int i=0;i<n;i++)
{
name[i]=cin.next();
id[i]=cin.nextBigInteger();
mp.put(id[i],name[i]);
vec.add(id[i]);
}
Collections.sort(vec,Collections.reverseOrder());
Vector<String> ans =new Vector<String>();
for(int i=0;i<n;i++)
{
if(vec.elementAt(i).compareTo(s)<=0)
{
s=s.subtract(vec.elementAt(i));
ans.add(mp.get(vec.elementAt(i)));
}
}
if(s.compareTo(BigInteger.valueOf(0))!=0) ans.removeAllElements();
System.out.println(ans.size());
for(int i=0;i<ans.size();i++)
{
System.out.println(ans.elementAt(i));
}
}
}