求助,用了vector的find(),开了O2还是过不去
查看原帖
求助,用了vector的find(),开了O2还是过不去
378253
Twilight255楼主2023/8/14 22:00
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int N=114514;
int n,m,k,p,x,f[N];
vector<int>q;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)q.push_back(i);//每个同学的编号
    for(int i=2;i<=n;i++){
        cin>>k>>p;
        if (p){
            q.erase(find(q.begin(),q.end(),i));
            q.insert(find(q.begin(),q.end(),k)+1,i);//p=0,插入左边
            
        }
        else{
            q.erase(find(q.begin(),q.end(),i));
            q.insert(find(q.begin(),q.end(),k),i);//p=1,插入左边
            
        }
    }
    cin>>m;
    for(int i=1;i<=m;i++){
        cin>>x;
        if(!f[x]){
            q.erase(find(q.begin(),q.end(),x));
            f[x]=1;
        }//移去同学
    }
    for(int i=0;i<q.size();i++){
        cout<<q[i]<<' ';//输出
    }
}
2023/8/14 22:00
加载中...