Cod sursa(job #1233755)

Utilizator thinkphpAdrian Statescu thinkphp Data 25 septembrie 2014 23:01:00
Problema Sortare prin comparare Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 1.41 kb
#include <stdio.h>
#include <malloc.h>
#define FIN "algsort.in"
#define FOUT "algsort.out"
#define INF 0x3f3f3f3f
#define MAXN 500005

struct Node {

       int info;
       struct Node *next;
};

int i, N, v[MAXN];

struct Node *head, *newnode, *c, *c1;

void read() {

     freopen(FIN, "r", stdin);

     scanf("%d", &N);

     for(i = 0; i < N; i++) {

         scanf("%d", &v[i]);    
     }

     fclose( stdin ); 
}

int main() {

    read();

    head = (struct Node*)malloc(sizeof(struct Node));  
    head->info = INF;
    head->next = NULL;
 
    for(i = 0; i < N; i++) {

        if(v[i] < head->info) {

             newnode = (struct Node*)malloc(sizeof(struct Node));  
             newnode->info = v[i];
             newnode->next = head;
             head = newnode;

        } else {

             c = head;
             c1 = head->next;

             while(v[i] > c1->info) {
 
                   c = c->next;
                   c1 = c1->next;
             } 

             newnode = (struct Node*)malloc(sizeof(struct Node));  
             newnode->info = v[i];

             newnode->next = c1;
             c->next = newnode;            
        }

    }

    freopen(FOUT, "w", stdout);

    c = head;

    while(c && c->info != INF) {

          printf("%d ", c->info);
          c = c->next;
    } 

    fclose( stdout );

    return(0);
}