Pagini recente » Cod sursa (job #1067727) | Cod sursa (job #1017162) | Cod sursa (job #319971) | Cod sursa (job #784753) | Cod sursa (job #979989)
Cod sursa(job #979989)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int *v,i;
int cautbin(int l,int r)
{
if(l>=r)
{
return l;
}
else
if(v[(l+r)/2]>i)
return cautbin(l,(l+r)/2);
else
return cautbin((l+r)/2+1,r);
}
int main()
{
short t;
int n,m,j;
fin>>n;
v=new int[n];
for(i=0;i<n;i++)
fin>>v[i];
fin>>m;
while(m)
{
fin>>t>>i;
if(t==0)
{
j=cautbin(0,n-1);
if(v[j]==i)
fout<<++j<<"\n";
else
if(v[j-1]==i)
fout<<j<<"\n";
else
fout<<"-1\n";
}
if(t==1)
{
j=cautbin(0,n-1);
if(v[j-1]==i)
fout<<j<<"\n";
else
if(v[j]<=i)
fout<<++j<<"\n";
else
fout<<"1\n";
}
if(t==2)
{
i--;
j=cautbin(0,n-1);
if(j!=n)
j++;
fout<<j<<"\n";
}
--m;
}
}