Cod sursa(job #1118511)

Utilizator titustrifanTrifan Titus titustrifan Data 24 februarie 2014 11:43:01
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#define nmax 100001
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int hi,lo,mid;
int n,v[nmax];

void bin01(int b, bool y)
{
    hi=n+1;
    lo=0;
    while (hi-lo>1)
	{
        mid=lo+(hi-lo)/2;
        if (b>=v[mid]) 
			lo=mid;
        else hi=mid;
    }
    if (!y)
	{
        if (v[lo]==b)
			g<<lo<<"\n";
        else 
			g<<-1<<"\n";
    } else
        g<<lo<<"\n";
}
 
void bin2(int b)
{
    hi=n+1;
    lo=0;
    while (hi-lo>1)
	{
        mid=lo+(hi-lo)/2;
        if(b<=v[mid]) 
			hi=mid;
        else lo=mid;
    }
     
    g<<hi<<"\n";
     
}
 
int main()
{
    int i,a,x,t;
    f>>n;
    for (i=1;i<=n;i++)
        f>>v[i];
    v[n+1]=v[i]+1;
     f>>t;
    for (i=1;i<=t;i++){
         f>>a>>x;
        if(a<2)
            bin01(x,a);
        else
            bin2(x);
    }
    return 0;
}