Cod sursa(job #1233760)

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

struct Node {
       int info;
       struct Node *next;
};

int i, 
    N, 
    v[ MAXN ];

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

void readAndSort() {

     freopen(FIN, "r", stdin);

     head = (struct Node*)malloc(sizeof(struct Node));  
     head->info = INF;
     head->next = NULL;
 
     scanf("%d", &N);

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

        scanf("%d", &v[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 );
     fclose( stdin ); 
}

int main() {

    readAndSort();

    return(0);
}