一个很水的版本 >_<
直接vector操作,修改时直接lower_bound找到位置,然后add操作时是a.insert(),del操作时是a.erase(),询问时直接枚举求和。。。
6778229 | 2012-09-16 21:57:16 | Accepted | 4288 | 6843MS | 1060K | 1154 B | G++ | yejinru |
View Code
1 #include <iostream> 2 #include <vector> 3 #include <cstring> 4 #include <cstdio> 5 #include <algorithm> 6 7 using namespace std; 8 9 char s[5]; 10 int n; 11 vector<int> a; 12 13 int main(){ 14 //freopen("sum.in","r",stdin); 15 int len,val; 16 vector<int>::iterator it; 17 while(cin>>n){ 18 len = 0; 19 a.clear(); 20 while(n--){ 21 scanf("%s",s); 22 if(s[0]=='s'){ 23 long long ans = 0; 24 for(int i=2;i<len;i+=5) 25 ans += a[i]; 26 cout<<ans<<endl; 27 } 28 else if(s[0]=='a'){ 29 len++; 30 scanf("%d",&val); 31 it = lower_bound(a.begin(),a.end(),val); 32 a.insert(it,val); 33 } 34 else{ 35 len--; 36 scanf("%d",&val); 37 it = lower_bound(a.begin(),a.end(),val); 38 a.erase(it); 39 } 40 } 41 } 42 return 0; 43 }