Pagini recente » Cod sursa (job #2868021) | Cod sursa (job #1701327) | Cod sursa (job #666503) | Cod sursa (job #2310249) | Cod sursa (job #1165061)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,a[100002],x,t,m;
int cautare0(int x, int st, int dr)
{
if(st==dr)
{
while(a[st+1]==x)
st++;
if(a[st]!=x)
return -1;
else
return st;
}
int m=(st+dr)/2;
if(x>a[m])
return cautare0(x,m+1,dr);
else
return cautare0(x,st,m);
}
int cautare1(int x, int st, int dr)
{
if(st==dr)
{
while(a[st+1]==x)
st++;
if(a[st]!=x)
return st-1;
return st;
}
int m=(st+dr)/2;
if(x>a[m])
return cautare1(x,m+1,dr);
else
return cautare1(x,st,m);
}
int cautare2(int x, int st, int dr)
{
if(st==dr)
{
while(a[st-1]==x)
st--;
return st;
}
int m=(st+dr)/2;
if(x>a[m])
return cautare2(x,m+1,dr);
else
return cautare2(x,st,m);
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++)
fin>>a[i];
fin>>m;
for(int i=0; i<m; i++)
{
fin>>t>>x;
switch (t)
{
case 0:
fout<<cautare0(x,1,n)<<'\n';
break;
case 1:
fout<<cautare1(x,1,n)<<'\n';
break;
case 2:
fout<<cautare2(x,1,n)<<'\n';
break;
}
}
return 0;
}