#include<bits/stdc++.h>
using namespace std;
long long n,a,b,q,L;
vector<long long>sz;
stack<long long>stos;
int main()
{
cin>>n;
for(long long i=0;i<n;i++)
{
cin>>a;
sz.push_back(a);
}
sort(sz.begin(),sz.end());
cin>>q;
for(long long i=0;i<q;i++)
{
cin>>L;
if(L==1)
{
cin>>a>>b;
long long ct=0;
bool nah=0;
while(stos.empty()==0)
{
stos.pop();
}
if(a>=b)
{
cout << "0" << endl;
continue;
}
sz.push_back(9223372036854775807);
for(long long i=0;i<sz.size();i++)
{
if(a>=b)
{
cout << ct << endl;
break;
}
if(sz[i+1]<a)
{
stos.push(sz[i]);
continue;
}
else
{
a+=sz[i];
ct++;
if(a>sz[i+1])
{
continue;
}
else
{
while(true)
{
if(a>=b)
{
break;
}
if(stos.empty()==1)
{
if(a<b)
{
nah=1;
break;
}
}
a+=stos.top();
stos.pop();
ct++;
}
if(nah==1)
{
cout << "-1" << endl;
break;
}
}
}
if(a>=b)
{
cout << ct << endl;
break;
}
}
sz.pop_back();
}
if(L==2)
{
cin>>a;
if(sz[sz.size()-1]<a)
{
sz.push_back(a);
}
else
{
vector<long long>::iterator IT=lower_bound(sz.begin(),sz.end(),a);
sz.insert(IT,a);
}
continue;
}
if(L==3)
{
cin>>a;
vector<long long>::iterator IT=lower_bound(sz.begin(),sz.end(),a);
sz.erase(IT);
continue;
}
}
}
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | #include<bits/stdc++.h> using namespace std; long long n,a,b,q,L; vector<long long>sz; stack<long long>stos; int main() { cin>>n; for(long long i=0;i<n;i++) { cin>>a; sz.push_back(a); } sort(sz.begin(),sz.end()); cin>>q; for(long long i=0;i<q;i++) { cin>>L; if(L==1) { cin>>a>>b; long long ct=0; bool nah=0; while(stos.empty()==0) { stos.pop(); } if(a>=b) { cout << "0" << endl; continue; } sz.push_back(9223372036854775807); for(long long i=0;i<sz.size();i++) { if(a>=b) { cout << ct << endl; break; } if(sz[i+1]<a) { stos.push(sz[i]); continue; } else { a+=sz[i]; ct++; if(a>sz[i+1]) { continue; } else { while(true) { if(a>=b) { break; } if(stos.empty()==1) { if(a<b) { nah=1; break; } } a+=stos.top(); stos.pop(); ct++; } if(nah==1) { cout << "-1" << endl; break; } } } if(a>=b) { cout << ct << endl; break; } } sz.pop_back(); } if(L==2) { cin>>a; if(sz[sz.size()-1]<a) { sz.push_back(a); } else { vector<long long>::iterator IT=lower_bound(sz.begin(),sz.end(),a); sz.insert(IT,a); } continue; } if(L==3) { cin>>a; vector<long long>::iterator IT=lower_bound(sz.begin(),sz.end(),a); sz.erase(IT); continue; } } } |
English