注意输出时不能越界
用向量来保存满足条件的地址
#include <iostream>
#include <vector>
using namespace std;
struct Node{
int val,next;
};
Node map1[100000];
vector<int> vectors[3];
/**
* 尚未完成
*/
int main() {
int address,N,K;
// vector<int> vectors[3];//保存地址
// map<int,Node*> map1;
scanf("%d%d%d",&address,&N,&K);
for (int i = 0; i < N; ++i) {
int addr,data,next;
scanf("%d",&addr);
// scanf("%d%d%d",&addr,&data,&next);
scanf("%d%d",&map1[addr].val,&map1[addr].next);
// Node* node=new Node();
// Node node;
// node.val=data;
// node.next=next;
// map1[addr]=node;
}
int addr=address;
while (addr!=-1){
int val=map1[addr].val;
if(val<0){
vectors[0].push_back(addr);
}else if(val>=0&&val<=K){
vectors[1].push_back(addr);
} else{
vectors[2].push_back(addr);
}
addr=map1[addr].next;
}
bool flag = false;
for (auto & i : vectors) {
for (int j : i) {
if (!flag) {
printf("%05d %d ", j, map1[j].val);
flag = true;
} else {
printf("%05d\n%05d %d ", j, j, map1[j].val);
}
}
}
printf("-1\n");
return 0;
}