直接使用了 STL里的东西 没什么原理,还好题目是10000ms,要是1000ms就要用线段树了
#include<iostream>
#include<cstdio>
#include<list>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<cmath>
#include<memory.h>
#include<set>
#define ll long long
#define LL __int64
#define eps 1e-8
#define e 2.718281828
//const ll INF=9999999999999;
#define M 400000100
#define inf 0xfffffff
using namespace std;
//vector<pair<int,int> > G;
//typedef pair<int,int> P;
//vector<pair<int,int>> ::iterator iter;
//
//map<ll,int>mp;
//map<ll,int>::iterator p;
//
vector<int>G;
vector<int> ::iterator iter;
void clear()
{
G.clear();
}
int main(void)
{
int n;
char s[12];
while(scanf("%d",&n)==1)
{
clear();
LL num;
while(n--)
{
scanf("%s",s);
if(s[0]=='a')
{
scanf("%I64d",&num);
iter=lower_bound(G.begin(),G.end(),num);
G.insert(iter,num);
}
if(s[0]=='d')
{
scanf("%I64d",&num);
iter=lower_bound(G.begin(),G.end(),num);
G.erase(iter);
}
if(s[0]=='s')
{
LL ans=0;
for(int i=2;i<G.size();i+=5)
ans+=G[i];
printf("%I64d\n",ans);
}
}
}
}