Pagini recente » Cod sursa (job #425169) | Cod sursa (job #469593) | Cod sursa (job #2166368) | Cod sursa (job #570798) | Cod sursa (job #1021315)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int N, v[100005], M, t, x;
int subprogram (int x)
{
int a=1, b=N, m;
while (1)
{
if (a>b)
{
if (!t) return -1;
if (t==1) return b;
if (t==2) return a;
}
m=(a+b)/2;
if (v[m]==x)
return m;
if (v[m]>x)
b=m-1;
else
a=m+1;
}
}
int main()
{
int poz, val;
in>>N;
for (int i=1;i<=N;++i)
in>>v[i];
in>>M;
for (int i=0;i<M;++i)
{
in>>t;
in>>x;
poz=subprogram(x);
switch(t)
{
case 0:
if (v[poz+1]==x)
{
while (v[poz]==x && poz<N)
++poz;
}
out<<poz<<'\n';
break;
case 1:
if (v[poz+1]==x)
{
while (v[poz]==x && poz<N)
++poz;
}
out<<poz<<'\n';
break;
case 2:
if (v[poz-1]==x)
{
while (v[poz]==x && v[poz-1]==x && poz>=1)
--poz;
}
out<<poz<<'\n';
break;
}
}
}