Cod sursa(job #2903200)

Utilizator 4N70N1U5Antonio Nitoi 4N70N1U5 Data 17 mai 2022 11:19:21
Problema Order Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>

using namespace std;

ifstream fin("order.in");
ofstream fout("order.out");

struct node
{
    int poz;
    node* next;
    node* prev;
};

void appendNode(node** head_ref, int poz, bool last)
{
    node* new_node = new node;

    node* last_node = *head_ref;

    new_node->poz = poz;

    new_node->next = NULL;

    if (*head_ref == NULL) {
        new_node->prev = NULL;
        *head_ref = new_node;
        return;
    }

    while (last_node->next != NULL)
        last_node = last_node->next;

    last_node->next = new_node;

    new_node->prev = last_node;

    (*head_ref)->prev = new_node;

    if (last)
        new_node->next = *head_ref;

    return;
}

int main()
{
    int n;

    fin >> n;

    node* head = NULL;

    for (int i = 1; i <= n; i++)
    {
        appendNode(&head, i, (i == n) ? true : false);
    }

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= i; j++)
        {
            head = head->next;
        }
        
        fout << head->poz << ' ';

        head->prev->next = head->next;
        
        head->next->prev = head->prev;
    }
}