社区讨论

疑惑,求解,帮助,必关

P1160队列安排参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mhj0xn07
此快照首次捕获于
2025/11/03 18:55
4 个月前
此快照最后确认于
2025/11/03 18:55
4 个月前
查看原帖
我老师用我的代码就能过 凭什么我用我的代码就不能过
CPP
#include<bits/stdc++.h>
using namespace std;

const int N = 1e5 + 5;
int n, m;
int q[N] = {1};
int cnt = 1;
bool vis[N];
void insert(int new_stu, int k, int right){
	int pos=-1;
	for(int i=0;i<cnt;i++){
		if(q[i]==k){
			pos=i;
		}
	}
	if(right==1) pos++;
	for(int i=cnt-1;i>=pos;i--){
		q[i+1]=q[i];
	}
	q[pos]=new_stu;
	cnt++;
}

void remove(int x){
	if(vis[x]) return;
	int pos=-1;
	for(int i=0;i<cnt;i++){
		if(q[i]==x){
			pos=i;
		}
	} 
	for(int i=pos+1;i<cnt;i++){
		q[i-1]=q[i];
	}
	cnt--;
	vis[x]=true;
}

int main(){
	cin>>n;
	for(int i=2; i<=n; i++){
		int k, p; cin>>k>>p; // k号同学 p=1 右边
//		cout << "?" << endl; 
		insert(i, k, p); 
	}
	
	cin>>m;
	while(m--){
		int x; cin>>x;
		remove(x);
	}
	for(int i=0; i<cnt; i++){
		cout << q[i] << " ";
	}

	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...