Pagini recente » Cod sursa (job #950877) | Cod sursa (job #2477624) | Cod sursa (job #2731431) | Cod sursa (job #2295895) | Cod sursa (job #1026461)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int poz;
int caut_bin (int v[],int left, int right, int x,int c)
{
int mid=(left+right)/2;
if (v[mid]==x)
return mid;
else
if (left<=right)
{
if(v[mid]<x)
{
return caut_bin(v,mid+1,right,x,c);
}
else
{
return caut_bin(v,left,mid-1,x,c);
}
}
else
{
if(c==0)
return -1;
if(c==1)
return left;
if(c==2)
return right;
}
}
int main()
{
int n,i,x,c,m,poz;
int v[100001];
f>>n;
for (i=1;i<=n;i++)
f>>v[i];
f>>m;
for (i=1;i<=m;i++)
{
f>>c>>x;
poz=caut_bin(v,1,n,x,c);
if(c==0)
{ if(poz!=1)
while(v[poz+1]==x && poz+1<=n)
poz++;
g<<poz<<endl;
}
if(c==1)
{
while(v[poz+1]==x && poz+1<=n)
poz++;
g<<poz<<endl;
}
if(c==2)
{
while(v[poz-1]==x && poz-1>0)
poz--;
g<<poz<<endl;
}
}
f.close();
g.close();
return 0;
}