#include <bits/stdc++.h>
using namespace std;
int n, q, opr, pom, najwmr;
long long waga[300100], sumamas, s, k;
int kol[300100], poz;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n;
for (int i=0; i<n; i++)
{
cin>>waga[i];
sumamas+=waga[i];
}
sort (waga, waga+n);
cin>>q;
for (int i=0; i<q; i++)
{
cin>>opr;
if (opr==1)
{
poz=0;
int zr=0;
cin>>s>>k;
if (k-s>sumamas)
cout<<-1<<"\n";
else if (s>=k)
cout<<0<<"\n";
else
{
najwmr=n-1;
for (int j=0; j<n; j++)
{
if (s<=waga[j])
{
najwmr=j-1;
break;
}
kol[poz++]=j;
}
if (najwmr==-1)
cout<<-1<<endl;
else
{
//cout<<s<<" "<<najwmr<<" "<<pop<<endl;
s+=waga[najwmr];
poz--;
zr++;
while (s<k)
{
for (int j=najwmr+1; j<n; j++)
{
if (s<=waga[j])
{
najwmr=j-1;
break;
}
kol[poz++]=j;
}
//cout<<s<<" "<<najwmr<<" "<<pop<<endl;
if (poz>0)
{
s+=waga[kol[poz-1]];
poz--;
}
else
{
zr=-1;
break;
}
zr++;
}
cout<<zr<<"\n";
}
}
}
if (opr==2)
{
cin>>pom;
sumamas+=pom;
if (pom>waga[n-1])
waga[n]=pom;
else
for (int j=0; j<n; j++)
{
if (waga[j]>=pom)
{
for (int k=n-1; k>=j; k--)
waga[k+1]=waga[k];
waga[j]=pom;
break;
}
}
n++;
}
if (opr==3)
{
cin>>pom;
sumamas-=pom;
for (int j=0; j<n; j++)
{
if (waga[j]==pom)
{
for (int k=j; k<n-1; k++)
waga[k]=waga[k+1];
break;
}
}
n--;
}
}
// for (int i=0; i<n; i++)
// cout<<waga[i]<<" ";
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 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 117 118 119 120 | #include <bits/stdc++.h> using namespace std; int n, q, opr, pom, najwmr; long long waga[300100], sumamas, s, k; int kol[300100], poz; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n; for (int i=0; i<n; i++) { cin>>waga[i]; sumamas+=waga[i]; } sort (waga, waga+n); cin>>q; for (int i=0; i<q; i++) { cin>>opr; if (opr==1) { poz=0; int zr=0; cin>>s>>k; if (k-s>sumamas) cout<<-1<<"\n"; else if (s>=k) cout<<0<<"\n"; else { najwmr=n-1; for (int j=0; j<n; j++) { if (s<=waga[j]) { najwmr=j-1; break; } kol[poz++]=j; } if (najwmr==-1) cout<<-1<<endl; else { //cout<<s<<" "<<najwmr<<" "<<pop<<endl; s+=waga[najwmr]; poz--; zr++; while (s<k) { for (int j=najwmr+1; j<n; j++) { if (s<=waga[j]) { najwmr=j-1; break; } kol[poz++]=j; } //cout<<s<<" "<<najwmr<<" "<<pop<<endl; if (poz>0) { s+=waga[kol[poz-1]]; poz--; } else { zr=-1; break; } zr++; } cout<<zr<<"\n"; } } } if (opr==2) { cin>>pom; sumamas+=pom; if (pom>waga[n-1]) waga[n]=pom; else for (int j=0; j<n; j++) { if (waga[j]>=pom) { for (int k=n-1; k>=j; k--) waga[k+1]=waga[k]; waga[j]=pom; break; } } n++; } if (opr==3) { cin>>pom; sumamas-=pom; for (int j=0; j<n; j++) { if (waga[j]==pom) { for (int k=j; k<n-1; k++) waga[k]=waga[k+1]; break; } } n--; } } // for (int i=0; i<n; i++) // cout<<waga[i]<<" "; return 0; } |
English