1133 Splitting A Linked List

#include<bits/stdc++.h> 
using namespace std;
const int MAXN=100010;
struct Node{
	int num;
	int address;
	int next;
}node[MAXN];
int main()
{
	freopen("in.txt","r",stdin);
	int start,n,k;cin>>start>>n>>k;
	vector<Node> ppp;ppp.resize(n);
	for(int i=0;i<n;i++){
		int add;
		cin>>add;node[add].address=add;
		cin>>node[add].num>>node[add].next;
	}
	vector<Node> temp1,temp2,temp3;
	for(int i=start;i!=-1;i=node[i].next){
		if(node[i].num<0){
			temp1.push_back(node[i]);
		}
		if(node[i].num<=k&&node[i].num>=0){
			temp2.push_back(node[i]);
		}
		if(node[i].num>k){
			temp3.push_back(node[i]);
		}
	}
	for(int i=0;i<temp2.size();i++){
		temp1.push_back(temp2[i]);
	}
	for(int i=0;i<temp3.size();i++){
		temp1.push_back(temp3[i]);
	}
	for(int i=0;i<temp1.size()-1;i++){
		printf("%05d %d %05d\n",temp1[i].address,temp1[i].num,temp1[i+1].address);
	}
	printf("%05d %d -1\n",temp1[temp1.size()-1].address,temp1[temp1.size()-1].num);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/csg3140100993/article/details/82501006