#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0; i<(n); i++)
#define all(x) x.begin(),x.end()
using ll=long long;
using ld=long double;
template<class S>
struct fw_tree{
int size;
vector<S> tree;
fw_tree(int sz){
size=sz;
tree=vector<S>(sz+1,0);
}
void add(int p,int v){
p++;
while(p<=size){
tree[p]+=v;
p+=p&-p;
}
}
S sum(int r){
S ret=0;
while(r>0){
ret+=tree[r];
r-=r&-r;
}
return ret;
}
};
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
ll W;
cin>>N>>W;
vector<pair<int,int>> work(N);
rep(i,N){
int S,Q;
cin>>S>>Q;
work[i]={Q,S};
}
sort(all(work));
vector<pair<ld,int>> order(N);
rep(i,N){
order[i]={((ld)work[i].second)/((ld)work[i].first),i};
}
sort(all(order));
fw_tree<ll> cost(N);
fw_tree<int> count(N);
pair<int,ld> ans={-1,0};
pair<int,int> out={-1,-1};
rep(i,N){
ll q,s;
tie(q,s)=work[order[i].second];
count.add(order[i].second,1);
cost.add(order[i].second,q);
int ok=0,ng=N+1;
while(ng-ok>1){
int mid=(ok+ng)>>1;
if(cost.sum(mid)*s<=W*q){
ok=mid;
}
else{
ng=mid;
}
}
int now=count.sum(ok);
ld cst=cost.sum(ok)*order[i].first;
if(ans<pair(now,-cst)){
ans=pair(now,-cst);
out=pair(i,ok);
}
}
cout<<ans.first<<"\n";
vector<bool> col(N,0);
rep(i,out.first+1){
col[order[i].second]=1;
}
rep(i,out.second){
if(col[i]){
cout<<i+1<<"\n";
}
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
0 ms |
348 KB |
Partially correct |
2 |
Partially correct |
0 ms |
344 KB |
Partially correct |
3 |
Partially correct |
0 ms |
348 KB |
Partially correct |
4 |
Partially correct |
0 ms |
348 KB |
Partially correct |
5 |
Partially correct |
1 ms |
348 KB |
Partially correct |
6 |
Partially correct |
1 ms |
348 KB |
Partially correct |
7 |
Partially correct |
2 ms |
344 KB |
Partially correct |
8 |
Partially correct |
2 ms |
604 KB |
Partially correct |
9 |
Partially correct |
3 ms |
604 KB |
Partially correct |
10 |
Partially correct |
3 ms |
604 KB |
Partially correct |
11 |
Partially correct |
3 ms |
604 KB |
Partially correct |
12 |
Partially correct |
4 ms |
856 KB |
Partially correct |
13 |
Partially correct |
5 ms |
1116 KB |
Partially correct |
14 |
Partially correct |
8 ms |
1120 KB |
Partially correct |
15 |
Partially correct |
8 ms |
1412 KB |
Partially correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
1 ms |
348 KB |
Partially correct |
2 |
Partially correct |
0 ms |
356 KB |
Partially correct |
3 |
Partially correct |
1 ms |
356 KB |
Partially correct |
4 |
Partially correct |
12 ms |
1628 KB |
Partially correct |
5 |
Partially correct |
34 ms |
4300 KB |
Partially correct |
6 |
Partially correct |
245 ms |
19420 KB |
Partially correct |
7 |
Partially correct |
280 ms |
25840 KB |
Partially correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
1 ms |
348 KB |
Partially correct |
2 |
Partially correct |
1 ms |
348 KB |
Partially correct |
3 |
Partially correct |
1 ms |
344 KB |
Partially correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
1 ms |
348 KB |
Partially correct |
2 |
Partially correct |
1 ms |
348 KB |
Partially correct |
3 |
Partially correct |
1 ms |
500 KB |
Partially correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
1 ms |
348 KB |
Partially correct |
2 |
Partially correct |
1 ms |
352 KB |
Partially correct |
3 |
Partially correct |
1 ms |
344 KB |
Partially correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
77 ms |
7504 KB |
Partially correct |
2 |
Partially correct |
74 ms |
7504 KB |
Partially correct |
3 |
Partially correct |
82 ms |
7668 KB |
Partially correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
135 ms |
12884 KB |
Partially correct |
2 |
Partially correct |
131 ms |
13000 KB |
Partially correct |
3 |
Partially correct |
131 ms |
12940 KB |
Partially correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
332 ms |
29232 KB |
Partially correct |
2 |
Partially correct |
326 ms |
29268 KB |
Partially correct |
3 |
Partially correct |
326 ms |
29232 KB |
Partially correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
372 ms |
32564 KB |
Partially correct |
2 |
Partially correct |
367 ms |
32384 KB |
Partially correct |
3 |
Partially correct |
377 ms |
32432 KB |
Partially correct |