1133 Splitting A Linked List (25)

#include<iostream>
#include<algorithm>
#define maxn 100005
using namespace std;

int k=0;
struct Node{
   
	int address,data,next,inList,oriorder;
}node[maxn];

bool cmp(Node a, Node b){
   
	if(!a.inList||!b.inList) return a.inList>b.inList;
	if((a.data>=0&&b.data<0)||(a.data<0&&b.data>=0))
	return a.data<b.data;
	if((a.data>k&&b.data<=k)||(a.data<=k&&b.data>k))
	return a.data<b.data;
	return a.oriorder<b.oriorder;
}

int main(){
   
	int n,head,address,data,next,count=0;
	scanf("%d%d%d",&head,&n,&k);
	for(int i=0;i<n;i++){
   
		scanf("%d%d%d",&address,&data,&next);
		node[address]={
   address,data,next,0,0};
	}
	for(int p=head;p!=-1;p=node[p].next){
   
		node[p].inList=1;
		node[p].oriorder=count;
		count++;
	}
	sort(node,node+maxn,cmp);
	for(int i=0;i<count-1;i++)
	printf("%05d %d %05d\n",node[i].address,node[i].data,node[i+1].address);
	printf("%05d %d -1\n",node[count-1].address,node[count-1].data,-1);
	return 0;
}
全部评论

相关推荐

仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
今天投了小鹏,收到了AI面,大概会问哪些啊?
期末一定及格:总共4个部分,心理测评、行测、然后就是问岗位、对岗位的理解、过往遇到了哪些难点怎么解决,很简单,没有什么特别专业的问题,都是一些综合素质相关的
小鹏汽车AI面4人在聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务