#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define st first
#define nd second
map<ll,int> mapa;
map<ll,int>::iterator it;
vector<ll> wziete;
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n;
cin >> n;
for(int i = 1; i <= n; i++){
ll x;
cin >> x;
mapa[-x]++;
}
int q;
cin >> q;
while(q--){
int nr;
cin >> nr;
if(nr == 1){
ll s,k;
cin >> s >> k;
if(k <= s){
cout << 0 << '\n';
continue;
}
int ans = 0;
ll temp = s;
while(temp < k){
it = mapa.lower_bound(-(temp - 1));
if(it == mapa.end())
break;
ll nb = it -> st;
temp += -nb;
wziete.push_back(nb);
if(it -> nd == 1)
mapa.erase(nb);
else
it -> nd--;
ans++;
}
if(temp < k)
cout << -1 << '\n';
else
cout << ans << '\n';
for(int i = 0; i < (int) wziete.size(); i++)
mapa[wziete[i]]++;
wziete.clear();
continue;
}
ll w;
cin >> w;
if(nr == 2)
mapa[-w]++;
else{
if(mapa[-w] == 1)
mapa.erase(-w);
else
mapa[-w]--;
}
}
return 0;
}
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 | #include <bits/stdc++.h> using namespace std; #define ll long long #define st first #define nd second map<ll,int> mapa; map<ll,int>::iterator it; vector<ll> wziete; int main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; cin >> n; for(int i = 1; i <= n; i++){ ll x; cin >> x; mapa[-x]++; } int q; cin >> q; while(q--){ int nr; cin >> nr; if(nr == 1){ ll s,k; cin >> s >> k; if(k <= s){ cout << 0 << '\n'; continue; } int ans = 0; ll temp = s; while(temp < k){ it = mapa.lower_bound(-(temp - 1)); if(it == mapa.end()) break; ll nb = it -> st; temp += -nb; wziete.push_back(nb); if(it -> nd == 1) mapa.erase(nb); else it -> nd--; ans++; } if(temp < k) cout << -1 << '\n'; else cout << ans << '\n'; for(int i = 0; i < (int) wziete.size(); i++) mapa[wziete[i]]++; wziete.clear(); continue; } ll w; cin >> w; if(nr == 2) mapa[-w]++; else{ if(mapa[-w] == 1) mapa.erase(-w); else mapa[-w]--; } } return 0; } |
English