ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#215274 | #2639. 省钱 | meixuan | 100 | 481ms | 4264kb | C++ | 1.4kb | 2024-11-27 21:58:41 | 2024-11-27 23:40:04 |
answer
#include<bits/stdc++.h>
#define int long long
using namespace std;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q1;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q2;
priority_queue<int,vector<int>,greater<int> > q3;
int q[1000001],w[1000001];
bool vis[1000001];
signed main(){
int n,k,s,now=0,ans=0;
cin >>n>>k>>s;
for(int i=1;i<=n;i++){
cin >>w[i]>>q[i];
q1.push(make_pair(w[i],i));
q2.push(make_pair(q[i],i));
}
for(int i=1;i<=k;i++){
if(q2.empty())break;
if(now+q2.top().first>s){
cout <<ans;
return 0;
}
// cout <<now<<endl;
now+=q2.top().first;
ans++;
vis[q2.top().second]=1;
q3.push(w[q2.top().second]-q2.top().first);
q2.pop();
}
// cout <<ans<<endl;
// cout <<now<<endl;
while((!q1.empty())&&(!q2.empty())){
while((!q1.empty())&&vis[q1.top().second])q1.pop();
while((!q2.empty())&&vis[q2.top().second])q2.pop();
if(q1.top().first<q2.top().first+q3.top()){
// cout <<q1.top().second<<' '<<now+q1.top().first<<' '<<s<<endl;
if(now+q1.top().first>s)break;
now+=q1.top().first;
ans++;
vis[q1.top().second]=1;
q1.pop();
}
else{
if(q2.top().first+q3.top()+now>s)break;
// cout <<"aaa"<<endl;
now+=q2.top().first+q3.top();
ans++;
vis[q2.top().second]=1;
q3.pop();
q3.push(w[q2.top().second]-q2.top().first);
q2.pop();
}
if(ans>=n)break;
}
cout <<ans;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 42ms
memory: 3996kb
input:
50000 30828 852557364841 682084050 257603011 870868024 517458094 732267860 201407488 777566656 55879...
output:
17903
result:
ok single line: '17903'
Test #2:
score: 10
Accepted
time: 55ms
memory: 3736kb
input:
50000 10508 8982273367520 34111224 12372852 549875017 525549262 357107918 219952140 644308048 222008...
output:
37621
result:
ok single line: '37621'
Test #3:
score: 10
Accepted
time: 46ms
memory: 3732kb
input:
50000 23114 535861686266 359271294 298114231 605400720 491693949 755566780 539381575 155586610 92962...
output:
14723
result:
ok single line: '14723'
Test #4:
score: 10
Accepted
time: 53ms
memory: 3736kb
input:
50000 13490 4616703243118 286358449 133228996 162995754 17235506 661390160 561824344 282751480 15433...
output:
30961
result:
ok single line: '30961'
Test #5:
score: 10
Accepted
time: 49ms
memory: 3996kb
input:
50000 26352 8630976119100 70133466 32927792 90392510 89764542 307782646 75889114 123168574 66039130 ...
output:
42944
result:
ok single line: '42944'
Test #6:
score: 10
Accepted
time: 47ms
memory: 3736kb
input:
50000 11800 213255455323 405512104 311547645 122797690 35257030 782246460 533338866 416860264 504733...
output:
9869
result:
ok single line: '9869'
Test #7:
score: 10
Accepted
time: 48ms
memory: 4000kb
input:
50000 19734 4267681411347 732638120 327229436 361949068 274173372 539440696 285784669 94445920 84513...
output:
32498
result:
ok single line: '32498'
Test #8:
score: 10
Accepted
time: 43ms
memory: 3736kb
input:
50000 254 18445304121 375481124 36148026 388507104 183081259 261838134 179691990 485282800 209534680...
output:
1564
result:
ok single line: '1564'
Test #9:
score: 10
Accepted
time: 49ms
memory: 3732kb
input:
50000 3260 4076050769242 210627773 8756794 68253913 5333287 812306900 176444281 561388618 94960450 6...
output:
23173
result:
ok single line: '23173'
Test #10:
score: 10
Accepted
time: 49ms
memory: 4264kb
input:
50000 44485 12129791734731 590854222 262410600 992399148 641692708 219274382 56485932 730651726 4088...
output:
49537
result:
ok single line: '49537'