PAT Niveau A 1074 solution aux questions

Comme je suis paresseux, je n'écrirai pas d'explications et de commentaires, mais la lisibilité et la simplicité du code sont toujours garanties, et j'écrirai des explications si j'ai le temps plus tard...

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct node {
    
    
    int address;
    int data;
    int next;
} list[100010];

vector<node> ans;

int main() {
    
    
    int head, n, k;
    scanf("%d%d%d", &head, &n, &k);
    for (int i = 0; i < n; i++) {
    
    
        int address;
        scanf("%d", &address);
        list[address].address = address;
        scanf("%d%d", &list[address].data, &list[address].next);
    }
    int p = head;
    while (p != -1) {
    
    
        ans.push_back(list[p]);
        p = list[p].next;
    }
    int r_num = ans.size() / k;
    for (int i = 0; i < r_num; i++) {
    
    
        reverse(ans.begin() + i * k, ans.begin() + (i + 1) * k);
    }
    for (int i = 0 ; i < ans.size(); i++) {
    
    
        if (i == ans.size() - 1) printf("%05d %d -1\n", ans[i].address, ans[i].data);
        else printf("%05d %d %05d\n", ans[i].address, ans[i].data, ans[i+1].address);
    }
    return 0;
}

Je suppose que tu aimes

Origine blog.csdn.net/m0_59838087/article/details/123378202
conseillé
Classement