要用bufferReader,不然会超时
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class POJ_3111 {
static int n,k,count;
static class node{
double y;
int id,v,w;
}
static node[] ns=new node[100005];
static boolean C(double x){
for (int i = 0; i < n; i++) {
ns[i].y=ns[i].v-x*ns[i].w;
}
Comparator<node> cmp=new Comparator<node>() {
@Override
public int compare(node o1, node o2) {
return (int)(10000*o2.y-o1.y*10000);
}
};
Arrays.sort(ns,0,n,cmp);
double sum=0;
for (int i = 0; i < k; i++) {
sum+=ns[i].y;
}
return sum>=0;
}
static void solve(){
double lb=0,ub=10000005;
for (int i = 0; i < 100; i++) {
double mid=(lb+ub)/2;
if(C(mid))lb=mid;
else ub=mid;
}
for (int i = 0; i < k - 1; i++) {
System.out.print(ns[i].id+" ");
}
System.out.println(ns[k-1].id);
}
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String[] s1=br.readLine().split(" ");
n=Integer.parseInt(s1[0]);
k=Integer.parseInt(s1[1]);
for (int i = 0; i < n; i++) {
String[] s=br.readLine().split(" ");
ns[i]=new node();
ns[i].id=i+1;
ns[i].v=Integer.parseInt(s[0]);
ns[i].w=Integer.parseInt(s[1]);
}
solve();
}
}