vector做法
#include <vector>
#include <iostream>
using namespace std;
const int INF = 0x7f7f7f7f;
int n,minn,k,delta,out;
char opt;
vector<int> vec;
int find(int x){
int l = 0,r = vec.size()-1;
while (l < r){
int mid = (l+r)/2;
if (vec[mid] >= x)r = mid;
else l = mid+1;
}
return l;
}
int main()
{
cin >> n >> minn;
vec.push_back(INF);
while (n -- ){
/* for(int i=0;i<vec.size();i++)
cout << vec[i]+delta << " ";
cout << endl;
*/ cin >> opt >> k;
if (opt == 'I'){
k -= delta;
if (k < minn)continue;
int idx = find(k);
vec.insert(vec.begin()+idx,k);
}
if (opt == 'A'){
delta += k;
minn -= k;
}
if (opt == 'S'){
delta -= k;
minn += k;
int idx = find(minn);
out += idx;
vec.erase(vec.begin(),vec.begin()+idx);
}
if (opt == 'F'){
if(vec.size()-1<k){
cout << -1 << endl;
continue;
}
cout << vec[vec.size()-k-1]+delta << endl;
}
}
cout << out << endl;
return 0;
}