Cod sursa(job #1796388)

Utilizator teo.cons98Constantin Teodor-Claudiu teo.cons98 Data 3 noiembrie 2016 14:29:14
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.68 kb
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;

ifstream fin("a.in");
ofstream fout("a.out");

struct nod
{
    int val;
    nod *nxt;
}*p, *u;

int n;
long long v[200005], A[200005], M[200005], caut;

void citire()
{
    cin>>n;
    for(int i = 0; i < n; ++i)
    {
        cin>>v[i];
        M[i] = v[i];
    }
}

void sortare(int p, int u)
{
    if(p < u)
    {
        int p1 = p;
        int mid = (p + u) / 2 , mid1 = mid + 1, t, x = p1;
        sortare(p,mid);
        sortare(mid + 1,u);
        while(p <= mid and mid1 <= u)
        {
            if(v[p] <= v[mid1])
            {
                A[x] = v[p];
                ++x;
                ++p;
            }
            else
            {
                A[x] = v[mid1];
                ++mid1;
                ++x;
            }
        }
        while(p <= mid)
        {
            A[x] = v[p];
            ++x;
            ++p;
        }

        while(mid1 <= u)
        {
            A[x] = v[mid1];
            ++x;
            ++mid1;
        }
        for(int i = p1; i <= u; ++i)
        {
            v[i] = A[i];
        }
    }
}
void cautBin(int p, int u)
{
    int mid = (p + u) / 2;
    if(A[mid] == M[caut])
    {
        int p;
        p = A[caut];
        A[caut] = A[mid];
        A[mid] = p;
    }
    else if(A[mid] < M[caut])
    {
        cautBin(mid + 1, u);
    }
    else
    {
        cautBin(p, mid - 1);
    }
}

int main()
{
    long long max1 = 0, nrmax1, e = 0;
    citire();
    sortare(0, n - 1);
    for(int i = 0; i < n; ++i)
    {
        cout<<v[i]<<" ";
    }
    cout<<n - e;
}