sample output:
4
-1
第一题
#include<bits/stdc++.h>
using namespace std;
list<int> balls;
list<int>::iterator it;
void check() {//消除球
int lst=-1,combo=0;
it=balls.begin();
for(it=balls.begin();it!=balls.end();it++) {
if(*it!=lst)lst=*it,combo=0;
combo++;
if(combo==3)break;
}
if(combo<3)return;
balls.erase(it--);
balls.erase(it--);
balls.erase(it--);
}
int main() {
int n,m,x,y;
cin>>n;
for(int i=1;i<=n;i++) {
cin>>x;
balls.push_back(x);
}
cin>>m;
for(int i=1;i<=m;i++) {
cin>>x>>y;
it=balls.begin();
advance(it,x);
balls.insert(it,y);
check();
}
if(balls.size()==0)cout<<"YES";
else cout<<"NO";
return 0;
}
第二题
#include<bits/stdc++.h>
using namespace std;
list<int> nums;
list<int>::iterator it;
int search(int x) {
it=nums.begin();
int j=0;
for(;it!=nums.end();it++) {
j++;
if(*it==x)return j;
}
return -1;
}
int main() {
int n,m,x,y;
char ch;
cin>>n>>m;
for(int i=1;i<=n;i++) {
cin>>x;
nums.push_back(x);
}
for(int i=1;i<=m;i++) {
cin>>ch;
switch(ch) {
case 'I'://插入
cin>>x>>y;
it=nums.begin();
advance(it,x-1);
nums.insert(it,y);
break;
case 'D'://删除
cin>>x;
it=nums.begin();
advance(it,x-1);
nums.erase(it);
break;
case 'S'://查找
cin>>x;
cout<<search(x)<<endl;
break;
}
}
return 0;
}
我觉得可以试下list