Cod sursa(job #184855)

Utilizator DastasIonescu Vlad Dastas Data 24 aprilie 2008 13:48:12
Problema Order Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>

const int maxn = 30001;

FILE *in = fopen("order.in","r"), *out = fopen("order.out","w");

struct list
{
    int x;

    list *prev;
    list *next;
};

int n;
list a[maxn];

void sterge(list *q)
{
    q->prev->next = q->next;
    q->next->prev = q->prev;
}

void go()
{
    int nr = 1;

    list *p = &a[0];

    while ( nr <= n )
    {
        for ( int i = 0; i < nr; ++i )
            p = p->next;

        fprintf(out, "%d ", p->x);
        sterge(p);
        ++nr;
    }

}

int main()
{
    fscanf(in, "%d\n", &n);

    for ( int i = 0; i < n; ++i )
    {
        a[i].x = i + 1;
        a[i].next = a + (i + 1) % n;
        a[i].prev = a + (i - 1 + n) % n;
    }

    go();

    return 0;
}