Cod sursa(job #287202)

Utilizator AstronothingIulia Comsa Astronothing Data 24 martie 2009 16:53:49
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <iostream>

using namespace std;

long findpoz(long elem, long a[], long n)
{
    long right = n, left = 0;

    int p = -1;

    while(left<=right)
    {
        if(elem == a[left]) return left;

        if(elem == a[right]) return right;

        long mid = (left+right)/2;

        if(elem<=a[mid]) right = mid-1;
        else left = mid+1;
    }

    return left;
}

int main()
{
    ifstream f("algsort.in");
    ofstream f2("algsort.out");

    long a[500001];
    int n;
    f>>n;

    f>>a[0];

    for(int i=1;i<n;i++)
    {
        long el;
        f>>el;
        if(el>=a[i-1]) a[i] = el;
        else
        {
            long ind = findpoz(el,a,i-1);

            for(int j=i;j>ind;j--) a[j] = a[j-1];

            a[ind] = el;
        }

    }

    cout<<findpoz(8,a,n-1);

    for(int i=0;i<n;i++) f2<<a[i]<<" ";

    f.close();
    f2.close();
    return 0;
}