Pagini recente » Statistici sergiu sotoc (se_ssuper) | Cod sursa (job #1350271) | Cod sursa (job #1293893) | Cod sursa (job #1446667) | Cod sursa (job #855693)
Cod sursa(job #855693)
#include<fstream>
#define lmax 110000
using namespace std;
int n,v[lmax],op,x;
int caut(int st,int dr){
if(st>dr)return st;
int m=(st+dr)/2;
if(x>=v[m])return caut(m+1,dr);
else return caut(st,m-1);
}
int cautf(int st, int dr){
if(st>dr)return st;
int m=(st+dr)/2;
if(x>v[m])return cautf(m+1,dr);
else return cautf(st,m-1);
}
int main(){
int i,et,b;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
f>>et;
while(et!=0){et--;
f>>op>>x;
if(op!=2)b=caut(1,n);
else b=cautf(1,n);
if(op==0){
if(v[b-1]!=x)g<<-1;
else g<<b-1;
}
if(op==1)g<<b-1;
if(op==2){
if(v[b-1]!=x)
{if(b==n+1)g<<b-1;
else g<<b;}
else g<<b-1;}
g<<'\n';}
f.close();
g.close();
}