知识点
- 排序
- 按格式输出
- 填充位数
注意
:
\color{red}注意:
注意:
注意-1要特别输出。
其他地址必须要输出5位,不够5位的需要补零。
#include <string>
#include <vector>
#include <set>
#include <unordered_map>
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
const int N = 1e5+7;
struct node{
int add, val, next, tag;
}E[N];
bool cmp(node a, node b){
return a.tag < b.tag;
}
bool cmp2(node a, node b){
return a.tag > b.tag;
}
int main(){
int st, n, k, add;
cin>>st>>n>>k;
for(int i = 0; i < N; i++){
E[i].tag = 0x3f3f3f3f;
}
for(int i = 0; i < n; i++){
cin>>add;
E[add].add = add;
cin>>E[add].val>>E[add].next;
}
int p = st, cnt = 0;
while(p != -1){
E[p].tag = cnt++;
p = E[p].next;
}
sort(E, E+N, cmp);
for(int i = 0; i + k <= cnt; i+=k){
sort(E+i, E+i+k, cmp2);
}
for(int i = 0; i < cnt; i++){
printf("%05d %d ", E[i].add, E[i].val);
if(i != cnt - 1){
printf("%05d\n", E[i+1].add);
}else printf("-1\n");
}
return 0;
}