Cod sursa(job #980510)

Utilizator SilviussMezei Silviu Silviuss Data 4 august 2013 20:45:59
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int *v,i;

int cautbin(int l,int r)
{
    if(l>=r)
    {
        return l;
    }
    else
        if(v[(l+r)/2]>i)
            return cautbin(l,(l+r)/2);
        else
            return cautbin((l+r)/2+1,r);
}

int main()
{
    short t;
    int n,m,j;
    fin>>n;
    v=new int[n];
    for(i=0;i<n;i++)
        fin>>v[i];
    fin>>m;
    while(m)
    {
        fin>>t>>i;
        if(t==0)
        {
            j=cautbin(0,n-1);
            if(v[j]==i)
                fout<<++j<<"\n";
            else
                if(v[j-1]==i)
                    fout<<j<<"\n";
                else
                    fout<<"-1\n";
        }
        if(t==1)
        {
            j=cautbin(0,n-1);
            if(v[j]<=i)
                fout<<++j<<"\n";
            else
                fout<<j<<"\n";
        }
        if(t==2)
        {
            i--;
            j=cautbin(0,n-1);
            if(j!=n)
                j++;
            fout<<j<<"\n";
        }
        --m;
    }
}