Cod sursa(job #218669)

Utilizator alex23alexandru andronache alex23 Data 2 noiembrie 2008 22:25:05
Problema Schi Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <stdio.h>

struct lista{
       int val;
       lista *urm;
       };
       
lista *prim, *ultim;

FILE *f = fopen("schi.in", "r"), *g = fopen("schi.out", "w");

int n, x;

int main()
 {
   fscanf(f, "%d", &n);
   fscanf(f, "%d", &x);
   prim = new lista;
   prim -> val = 1;
   prim -> urm = NULL;
   ultim = prim;
   
   for (int i = 2; i <= n; i++)
      {
         fscanf(f, "%d", &x);
            
         lista *temp1, *temp2;
         temp1 = new lista;
         temp1 -> val = i;
         //temp1 -> urm = NULL;
         
         if (x == 1) 
            {
               temp1 -> urm = prim;
               prim = temp1;   
            }
         else
         if (x == i) 
            {
               temp1 -> urm = NULL;
               ultim -> urm = temp1;
               ultim = temp1;   
            }   
         else
            {
                temp2 = new lista;
                temp2 = prim;
                for (int j = 1; j < x - 1; j++)
                  temp2 = temp2 -> urm;
                temp1 -> urm = temp2 -> urm;
                temp2 -> urm = temp1;   
            }   
      } 
   fclose(f);
   
   lista *temp;
   temp = new lista;
   temp = prim;
   
   for (int i = 1; i <= n; i++)
      {fprintf(g, "%d\n", temp -> val);
       temp = temp -> urm;
       } 
   fclose(g);
   
   return 0;     
   
 }