Pagini recente » Cod sursa (job #2660403) | Cod sursa (job #1188516) | Cod sursa (job #2397341) | Cod sursa (job #115620) | Cod sursa (job #1533975)
#include <bits/stdc++.h>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n,m,v[100000],maxx,k,x,ok;
void inline citire()
{
for(int i=1 ; i<=n ;i++)
in>>v[i];
}
int divide0(int li, int ls)
{
int mij=(li+ls)/2;
if(v[mij] == x && mij>maxx )
maxx=mij,ok=1;
divide0(li,mij-1);
divide0(mij+1,ls);
if(ok == 1)
return maxx;
return -1;
}
int divide1(int li, int ls)
{
int mij=(li+ls)/2;
if(v[mij] >= x && mij>maxx )
maxx=mij,ok=1;
divide1(li,mij-1);
divide1(mij+1,ls);
if(ok == 1)
return maxx;
return -1;
}
int divide2(int li, int ls)
{
int mij=(li+ls)/2;
if(v[mij] >= x && mij<maxx )
maxx=mij,ok=1;
divide2(li,mij-1);
divide2(mij+1,ls);
if(ok == 1)
return maxx;
return -1;
}
int main()
{
in>>n;
citire();
while(m)
{
in>>k>>x;
if(k==0)
{maxx=1;
out<<divide0(1,n);
}
out<<'\n';
if(k==1)
{
maxx=1;
out<<divide1(1,n);
}
out<<'\n';
if(k==2)
{
maxx=n;
out<<divide2(1,n)<<'\n';
}}
return 0;
}