Pagini recente » Cod sursa (job #709810) | Cod sursa (job #1577953) | Cod sursa (job #1135613) | Cod sursa (job #670430) | Cod sursa (job #639629)
Cod sursa(job #639629)
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <iostream>
#define N 100010
using namespace std;
int v[N];
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n;
int couta0(int x)
{
int i,pas=1<<16;
for(i=0;pas!=0;pas/=2)
{
if(i+pas<=n&&v[i+pas]<=x)
i+=pas;
}
if(v[i]==x) return i;
return -1;
}
int couta2(int x)
{
int i,pas=1<<16;
for(i=0;pas!=0;pas/=2)
{
if(i+pas<=n&&v[i+pas]<x)
i+=pas;
}
return i+1;
}
int couta1(int x)
{
int i,pas=1<<16;
for(i=0;pas!=0;pas/=2)
{
if(i+pas<=n&&v[i+pas]<=x)
i+=pas;
}
return i;
}
int main ()
{
int tip ,m,cheese;
in>>n;
for(int i = 1;i<=n;i++)
{
in>>v[i];
}
in>>m;
for(int i = 0;i<m;i++)
{
in>>tip>>cheese;
switch(tip)
{
case 0: out<<couta0(cheese)<<"\n";break;
case 1: out<<couta1(cheese)<<"\n";break;
case 2: out<<couta2(cheese)<<"\n";break;
}
}
}