Pagini recente » Cod sursa (job #153353) | Cod sursa (job #383784) | Cod sursa (job #2040546) | Cod sursa (job #867820) | Cod sursa (job #1871344)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int a[100000],N,i,j,result=-1,x,M;
short type;
void quick(int li,int ls)
{
int i=0,j=0,aux=0,m=0;
m=a[li+(ls-li)/2];
i=li; j=ls;
while(i<=j)
{
while(a[i]<m && i<ls)
i++;
while(a[j]>m && j>li)
j--;
if(i<=j)
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
i++;
j--;
}}
if(i<ls)
quick(i,ls);
if(j>li)
quick(li,j);
}
int f0(int start,int end)
{
int mid=start+(end-start)/2;
if(start<=end)
{if(a[mid]>x)
return f0(start,mid-1);
else
if(a[mid]<x)
return f0(mid+1,end);
else
{
result=mid;
f0(mid+1,end);
}}
return result;
}
int f1(int start,int end)
{
int mid=start+(end-start)/2;
if(start<=end)
{if(a[mid]>x)
return f1(start,mid-1);
else
{result=mid;
return f1(mid+1,end);}
}
return result;
}
int f2(int start,int end)
{
int mid=start+(end-start)/2;
if(start<=end)
{
if(a[mid]<x)
return f2(mid+1,end);
else
{ result=mid;
return f2(start,mid-1);}
}
return result;}
int main()
{
fin>>N;
for(i=1;i<=N;i++)
fin>>a[i];
fin>>M;
quick(1,N);
for(i=1;i<=M;i++)
{
fin>>type;
fin>>x;
if(type==0)
fout<<f0(1,N)<<"\n";
else
if(type==1)
fout<<f1(1,N)<<"\n";
else
fout<<f2(1,N)<<"\n";
}
return 0;
}