#include <bits/stdc++.h>
using namespace std;
multiset <long long> jezioro;
vector <long long> naSet;
long long zap1()
{
long long a,b;
cin>>a>>b;
if(a==b || a>b)
return 0;
long long wyn=0;
auto k=upper_bound(jezioro.begin(), jezioro.end(), -a);
while(k!=jezioro.end() && a<b)
{
a-=*k;
++wyn;
naSet.push_back(*k);
jezioro.erase(jezioro.find(*k));
k=upper_bound(jezioro.begin(), jezioro.end(), -a);
}
for(long long i=naSet.size()-1; i>=0; --i)
{
jezioro.insert(naSet[i]);
naSet.pop_back();
}
//if(k==jezioro.end() && a<b)
// return -1;
//cout<<a<<" "<<b<<endl;
if(a<b)
return -1;
return wyn;
}
void zap2()
{
long long a;
cin>>a;
jezioro.insert(-a);
}
void zap3()
{
long long a;
cin>>a;
jezioro.erase(-a);
}
int main()
{
int ryby;
cin>>ryby;
for(int i=0; i<ryby; ++i)
{
long long a;
cin>>a;
jezioro.insert(-a);
}
int q;
cin>>q;
for(int i=0; i<q; ++i)
{
int a;
cin>>a;
if(a==1)
cout<< zap1()<<endl;
else if(a==2)
zap2();
else
zap3();
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | #include <bits/stdc++.h> using namespace std; multiset <long long> jezioro; vector <long long> naSet; long long zap1() { long long a,b; cin>>a>>b; if(a==b || a>b) return 0; long long wyn=0; auto k=upper_bound(jezioro.begin(), jezioro.end(), -a); while(k!=jezioro.end() && a<b) { a-=*k; ++wyn; naSet.push_back(*k); jezioro.erase(jezioro.find(*k)); k=upper_bound(jezioro.begin(), jezioro.end(), -a); } for(long long i=naSet.size()-1; i>=0; --i) { jezioro.insert(naSet[i]); naSet.pop_back(); } //if(k==jezioro.end() && a<b) // return -1; //cout<<a<<" "<<b<<endl; if(a<b) return -1; return wyn; } void zap2() { long long a; cin>>a; jezioro.insert(-a); } void zap3() { long long a; cin>>a; jezioro.erase(-a); } int main() { int ryby; cin>>ryby; for(int i=0; i<ryby; ++i) { long long a; cin>>a; jezioro.insert(-a); } int q; cin>>q; for(int i=0; i<q; ++i) { int a; cin>>a; if(a==1) cout<< zap1()<<endl; else if(a==2) zap2(); else zap3(); } } |
English