Pagini recente » Cod sursa (job #2656313) | Cod sursa (job #2846606) | Cod sursa (job #920601) | Cod sursa (job #225469) | Cod sursa (job #344251)
Cod sursa(job #344251)
#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;
}