Cod sursa(job #344251)

Utilizator zalmanDanci Emanuel Sebastian zalman Data 29 august 2009 14:11:31
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <limits.h>
#include <cstdio>
using namespace std;

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

Nod *v, *toAdd, *toFind;
int N, i, nr;

void solveProblem(void)
{
	v = new Nod;
	v -> info = INT_MAX;
	v -> next = 0;
	for(i = 1; i <= N; i++)
	{
		toAdd = new Nod;
		scanf("%d", &nr);
		toAdd -> info = nr;
		
		if(toAdd -> info <= v -> info)
		{
			toAdd -> next = v;
			v = toAdd;
		}
		else
		{
			toFind = v;
			
			while((toFind -> info < toAdd -> info) && (toFind -> next -> info < toAdd -> info))
				toFind = toFind -> next;
			
			toAdd -> next = toFind -> next;
			toFind -> next = toAdd;
		}
	}
	
}
void printData(Nod *v)
{
	while(v -> next)
	{
		printf("%d ", v -> info);
		v = v -> next;
	}
}
int main(void)
{
	freopen("algsort.in", "r", stdin);
	freopen("algsort.out", "w", stdout);
	scanf("%d", &N);
	
	solveProblem();
	printData(v);
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}