Cod sursa(job #2090095)

Utilizator daniela12Sandu Daniela Teodora daniela12 Data 17 decembrie 2017 16:26:20
Problema Schi Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int n, v[30005], t[30005], fi[30005], idx[30008];
void citire ()
{
    f>>n;
    int i;
    for(i=1;i<=n;++i)
    {
        f>>v[i];
        t[i]=1;
        idx[i]=i;
    }
    f.close();
}
void update (int j)
{
    int i;
    for(i=j;i<=n;++i)
        idx[i]--;
}
int cautareBin(int val)
{
    int li=1, ls=n, mid;
    while(li<=ls)
    {
        mid=(li+ls)>>1;
        if(idx[mid]==val && idx[mid-1]!=val)
            return mid;
        if(val>idx[mid])    li=mid+1;
        else   ls=mid-1;
    }
    return 0;
}
int main()
{   citire();
    int i;
    fi[v[n]]=n;
    t[v[n]]=0;
    update(v[n]);
    for(i=n-1;i>=1;--i)
    {
        int j;
        j=cautareBin(v[i]);
        update(j);
        fi[j]=i;
        t[j]=0;
    }
    for(i=1;i<=n;++i)
        g<<fi[i]<<'\n';
    g.close();
}