Pagini recente » Cod sursa (job #1166283) | Cod sursa (job #2346531) | Cod sursa (job #1491434) | preONI 2008 - Clasament Runda 1, Clasa a 10-a | Cod sursa (job #1836685)
#include <iostream>
#include <fstream>
#define N 100010
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int max1=-1,min1;
int v[N],i,j,x,y,t,r,n,k;
void caut1(int s,int d,int x)
{
if(s<=d)
{
int m;
if(s==d)
{
if(max1<s && v[s]==x)
max1=m;
}
caut1(s,m,x);
caut1(m+1,d,x);
}
}
void caut2(int s,int d,int x)
{
if(s<=d)
{
int m;
m=(s+d)/2;
if(s==d)
{
if(s>max1 && v[s]<=x)
max1=m;
}
caut2(s,m,x);
caut2(m+1,d,x);
}
}
void caut3(int s,int d,int x)
{
if(s<=d)
{
int m;
m=(s+d)/2;
if(s==d)
{
if(s<min1 && v[s]>=x)
min1=m;
}
caut3(s,m,x);
caut3(m+1,d,x);
}
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
f>>k;
while(k!=0)
{
f>>y>>x;
max1=-1;
min1=n;
if(y==0)
{
caut1(1,n,x);
g<<max1<<endl;
}
else
if(y==1)
{
caut2(1,n,x);
g<<max1<<endl;
}
else
if(y==2)
{
caut3(1,n,x);
g<<min1<<endl;
}
k--;
}
}