Pagini recente » Cod sursa (job #2686536) | Cod sursa (job #2132207) | Cod sursa (job #1983722) | Cod sursa (job #2613567) | Cod sursa (job #2334592)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int cautbin(int val, int n, int v[])
{
int pos=0,msk;
for(msk=1<<20; msk>0; msk/=2)
if(pos+msk<=n && v[pos+msk]<=val)
pos+=msk;
if(v[pos]==val)
return pos;
else
return -1;
}
int main()
{
int v[100001];
int cc=1,j,n,i,ins,m,x;
in>>n;
for(i=1; i<=n; i++)
in>>v[i];
in>>m;
for(i=1; i<=m; i++)
{
in>>ins>>x;
if(ins==0)
out<<cautbin(x,n,v)<<'\n';
else if(ins==1)
{
for(j=x; j>0; j--)
{
if(cautbin(j,n,v)!=-1)
{
out<<cautbin(j,n,v)<<'\n';
break;
}
}
}
else if(ins==2)
{
j=x;
while(cautbin(j,n,v)==-1)
{
j++;
}
while(v[cc]==j)
{
cc--;
}
cc++;
out<<cc<<" "<<'\n';
}
}
return 0;
}