STL的list做法 3,4,5TLE 应该是每次查找元素的指针的时候都用了循环,那怎么优化?
完整代码:
#include<bits/stdc++.h>
using namespace std;
list<int> a;
list<int>::iterator it;
int n,k,p,m,x,flag[100005];
inline int read(){
int x=0,f=1;
char ch=getchar();
while (ch<'0'||ch>'9'){
if (ch=='-') f=-1;
ch=getchar();
}
while (ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=getchar();
}
return x*f;
}//快读
inline void print(){
for (it=a.begin();it!=a.end();it++) printf("%d ",*it);
return ;
}
int main(){
n=read();
a.push_back(1);
for (int i=2;i<=n;i++){
k=read();p=read();
it=a.begin();
while (*it!=k) it++;
if (p==1) it++;
a.insert(it,i);
}
m=read();
for (int i=1;i<=m;i++){
x=read();
if (flag[x]==1) continue;
it=a.begin();
while(*it!=x) it++;
flag[*it]=1;
a.erase(it);
}
print();
}