Pagini recente » Cod sursa (job #1799597) | Cod sursa (job #2362802) | Cod sursa (job #2837008) | Cod sursa (job #2453250) | Cod sursa (job #2077534)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n;
const int N=16;
int v[100001];
void functie(int nr , int n)
{
int r=0,pas;
pas=1<<16;
while(pas!=0)
{
if(r+pas<=n && v[r+pas]<=nr)
{
r+=pas;
}
pas/=2;
}
if(v[r]!=nr)
{
r=-1;
}
out<<r<<"\n";
}
void functie1(int nr , int n)
{
int r=0,pas;
pas=1<<16;
while(pas!=0)
{
if(r+pas<=n && v[r+pas]<=nr)
{
r+=pas;
}
pas/=2;
}
out<<r<<"\n";
}
void functie2(int nr , int n)
{
int r=0,pas;
pas=1<<16;
while(pas!=0)
{
if(r+pas<=n && v[r+pas]<nr)
{
r+=pas;
}
pas/=2;
}
if(v[r]!=nr)
{
r++;
}
out<<r<<"\n";
}
int main()
{
int pas,r=0,i,k,f,nr;
pas=1<<N;
in>>n;
for(i=1 ; i<=n ; i++)
{
in>>v[i];
}
in>>k;
for(i=1 ; i<=k ; i++)
{
in>>f;
in>>nr;
if(f==0)
{
functie(nr,n);
}
if(f==1)
{
functie1(nr,n);
}
if(f==2)
{
functie2(nr,n);
}
}
return 0;
}