Cod sursă (job #139080)

Utilizator avatar experiment322 Alexandru-Damian Manea experiment322 IP ascuns
Problemă Pointeri Compilator c | 1,01 kb
Rundă Arhiva de probleme Status evaluat
Dată 31 mar. 2015 12:45:59 Scor 100
#include <stdio.h>
#define MAX_N 200000
#define NOTHING -1
#define INPFILE "pointeri.in"
#define OTPFILE "pointeri.out"

int st[MAX_N], dr[MAX_N], n, rad, prev;

void parcurge(int start)
{
    if (start != NOTHING) {
        parcurge(st[start]);
        if (prev == NOTHING) {
            rad         = start;
            st[start]   = NOTHING;
        } else {
            dr[prev]    = start;
            st[start]   = prev;
        }
        prev = start;
        parcurge(dr[start]);
    }
}

int main()
{
    freopen(INPFILE, "r", stdin);
    freopen(OTPFILE, "w", stdout);
    scanf("%d %d\n", &n, &rad);
    int i;
    for (i = 0; i < n; ++i) {
        scanf("%d", &st[i]);
    }
    for (i = 0; i < n; ++i) {
        scanf("%d", &dr[i]);
    }
    prev = NOTHING;
    parcurge(rad);
    printf("%d\n", rad);
    for (i = 0; i < n; ++i) {
        printf("%d ", st[i]);
    }
    putchar('\n');
    for (i = 0; i < n; ++i) {
        printf("%d ", dr[i]);
    }
    return 0;
}