packagemy_acm;import java.io.*;importjava.util.Arrays;importjava.util.StringTokenizer;importjava.math.BigInteger;public classMain {public static voidmain(String[] args) {
InputStream inputStream= System.in;//InputStream是表示字节输入流的所有类的超类
OutputStream outputStream =System.out;//InputStream与System 没有关系.System.in是System 这个类的静态变量,只是in是InputStream类型的
InputReader scan= newInputReader(inputStream);
PrintWriter out= newPrintWriter(outputStream);
Task solver= newTask();
solver.solve(scan, out);//这里当作原来的Main函数,输入输出都在里面解决
out.close();//关闭输出流
}static classTask {public voidsolve(InputReader scan, PrintWriter out) {while(scan.hasNext()) {longm;int n=scan.nextInt();
m=scan.nextLong();long [] c=new long[n+1];long sumb=0,suma=0;for(int i=0;i
a=scan.nextLong();
b=scan.nextLong();
c[i]=a-b;
sumb+=b;
suma+=a;
}int ans=0;//压缩数量
if(sumb>m)
ans=-1;else{
Arrays.sort(c,0,n);for(int i=n-1;i>=0;i--) {if(suma<=m) {break;
}
suma-=c[i];
ans++;
}
}
out.println(ans);
}
}
}//自己写出Scanner原本的输入语法,封装在InputReader类里
static classInputReader {publicBufferedReader reader;publicStringTokenizer tokenizer;publicInputReader(InputStream stream) {
reader= new BufferedReader(new InputStreamReader(stream), 32768);//32768是输入缓冲区大小,随便设的
tokenizer = null;
}publicString next() {while (tokenizer == null || !tokenizer.hasMoreTokens()) {try{
tokenizer= newStringTokenizer(reader.readLine());
}catch(IOException e) {throw newRuntimeException(e);
}
}returntokenizer.nextToken();
}public intnextInt() {returnInteger.parseInt(next());
}public longnextLong() {returnLong.parseLong(next());
}public doublenextDouble() {returnDouble.parseDouble(next());
}public booleanhasNext() {try{
String string=reader.readLine();if (string == null) {return false;
}
tokenizer= newStringTokenizer(string);returntokenizer.hasMoreTokens();
}catch(IOException e) {return false;
}
}public BigInteger nextBigInteger() {//大数
return newBigInteger(next());
}
}
}