Pagini recente » Cod sursa (job #1934583) | Cod sursa (job #1794768) | Cod sursa (job #1360546) | Cod sursa (job #1897592) | Cod sursa (job #1272644)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int N,M,i,x,tip;
long v[100005];
int tip0(int st, int dr, int x)
{
if(st>dr)
return -1;
int m=(st+dr)/2;
if(v[m]==x && tip0(m+1,dr,x)==-1)
return m;
if(v[m]<=x)
return tip0(m+1,dr,x);
if(v[m]>x)
return tip0(st,m-1,x);
}
int tip1(int st, int dr, int x)
{
if(st>dr)
return dr;
int m=(st+dr)/2;
if(v[m]<=x)
return tip0(m+1,dr,x);
if(v[m]>x)
return tip1(st,m-1,x);
}
int tip2(int st, int dr, int x)
{
if(st>dr)
return st;
int m=(st+dr)/2;
if(v[m]<x)
return tip2(m+1,dr,x);
if(v[m]>=x)
return tip2(st,m-1,x);
}
int main()
{
f>>N;
for(i=1;i<=N;i++)
f>>v[i];
f>>M;
for(i=1;i<=M;i++)
{
f>>tip>>x;
if(tip==0)
g<<tip0(1,N,x)<<"\n";
if(tip==1)
g<<tip1(1,N,x)<<"\n";
if(tip==2)
g<<tip2(1,N,x);
}
f.close();
g.close();
return 0;
}