Pagini recente » Cod sursa (job #1786494) | Monitorul de evaluare | Cod sursa (job #2264085) | Cod sursa (job #755607) | Cod sursa (job #1309347)
#include <iostream>
#include <fstream>
using namespace std;
int n,v[100000];
int caut0(int x)
{
int pas,i=0;
pas=1<<16;
while(pas!=0)
{
if((i+pas)<=n && v[i+pas]<=x)
i+=pas;
pas/=2;
}
if(v[i]==x)
return i;
return -1;
}
int caut1(int x)
{
int pas,i=0;
pas=1<<16;
while(pas!=0)
{
if((i+pas)<=n && v[i+pas]<=x)
i+=pas;
pas/=2;
}
return i;
}
int caut2(int x)
{
int pas,i=0;
pas=1<<16;
while(pas!=0)
{
if((i+pas)<=n && v[i+pas]<x)
i+=pas;
pas/=2;
}
return 1+i;
}
void citire()
{
int m,i,tip,x;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
in>>m;
for(i=1;i<=m;i++)
{
in>>tip>>x;
if(tip==0)
out << caut0(x) << "\n";
if(tip==1)
out<< caut1(x) << "\n";
if(tip==2)
out<< caut2(x) << "\n";
}
in.close();
}
int main()
{
citire();
return 0;
}