85 D "解题报告"
俗话说的好,暴力出奇迹!
http://codeforces.com/contest/85/problem/D
题意:
你需要对一个集合支持三个操作:(集合是可重的)
插入一个数,删除一个数,求下面这玩意儿
MS C++很遗憾的TLE了,不过没关系
GNU C++能过..
#include<set> #include<map> #include<list> #include<queue> #include<stack> #include<math.h> #include<string> #include<time.h> #include<bitset> #include<vector> #include<memory> #include<utility> #include<stdio.h> #include<sstream> #include<fstream> #include<iostream> #include<stdlib.h> #include<string.h> #include<algorithm> using namespace std; vector<int> v; int main() { #ifdef absi2011 freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); #endif ios::sync_with_stdio(false); int n; scanf("%d",&n); int i; int flag=0; long long ans; for (i=0;i<n;i++) { static char a[105]; int x; scanf("%s",a); if (a[0]=='a') { scanf("%d",&x); v.insert(lower_bound(v.begin(),v.end(),x),x); flag=0; } if (a[0]=='d') { scanf("%d",&x); v.erase(lower_bound(v.begin(),v.end(),x)); flag=0; } if (a[0]=='s') { if (flag==1) { cout<<ans<<'\n'; continue; } ans=0; int i; for (i=2;i<v.size();i+=5) { ans+=v[i]; } cout<<ans<<'\n'; flag=1; } } return 0; }