Pagini recente » Flux si cuplaj | Cod sursa (job #143964) | Cod sursa (job #2419062) | Cod sursa (job #3213206) | Cod sursa (job #1519180)
#include<fstream>
using namespace std;
int a[100133];
int i,j,k,m,n,u,t;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int cauta (int x)
{
int ic=1;
int sf=n;
while (ic<=sf)
{
int mijl=(ic+sf)/2;
if (a[mijl]==x) return mijl;
if (x>a[mijl]) ic=mijl+1;
if (x<a[mijl]) sf=mijl-1;
}
return 0;
}
int main()
{
ios_base::sync_with_stdio(0);
cin>>n;
for (i=1; i<=n; ++i) cin>>a[i];
cin>>m;
while (m--)
{
int op,k;
cin>>op>>k;
u=cauta(k);
if (!u) cout<<"-1\n";
if (!op)
{
while (a[u]==a[u+1] && u<=n) ++u;
cout<<u<<"\n";
}
else
if (op==1)
{
while (a[u]==a[u+1] && u<=n) ++u;
cout<<u<<"\n";
}
else
{
while (a[u]==a[u-1] && u>=1) --u;
cout<<u<<"\n";
}
}
return 0;
}