Pagini recente » Cod sursa (job #3257398) | Cod sursa (job #3286957) | Cod sursa (job #1483153) | Cod sursa (job #81242) | Cod sursa (job #1424769)
#include <iostream>
#include <fstream>
#define nmax 100000
#define L 16
using namespace std;
int v[nmax], n;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
void caut0(int x)
{
int i=0;
bool f=false;
int pas=1<<L;
while(pas!=0)
{
if(i+pas<=n&&v[i+pas]<=x)
{
i+=pas;
f=true;
}
pas>>=1;
}
if(f)
out<<i+1<<"\n";
else
out<<"-1\n";
}
void caut1(int x)
{
int i=0;
int pas=1<<L;
while(pas!=0)
{
if(i+pas<=n&&v[i+pas]<=x)
{
i+=pas;
}
pas>>=1;
}
out<<i+1<<"\n";
}
void caut2(int x)
{
int i=0;
int pas=1<<L;
while(pas!=0)
{
if(i+pas<=n&&v[i+pas]<x)
{
i+=pas;
}
pas>>=1;
}
out<<i+2<<"\n";
}
int main()
{
in>>n;
for(int i=0;i<n;++i)
in>>v[i];
int t;
in>>t;
for(int i=0;i<t;++i)
{
int tip, a;
in>>tip>>a;
switch(tip)
{
case 0:caut0(a);break;
case 1:caut1(a);break;
case 2:caut2(a);break;
}
}
out.close();
in.close();
return 0;
}