Pagini recente » Cod sursa (job #2036391) | Cod sursa (job #2262420) | Cod sursa (job #2546969) | Cod sursa (job #2310985) | Cod sursa (job #2121390)
#include <iostream>
#include <fstream>
using namespace std;
int ln_poz_egyenlo(int a[], int n, int x)
{
int b=0, j=n-1;
while(b < j)
{
int k=(b+j+1)/2;
if(a[k] > x)
j=k-1;
else if(a[k] < x)
b=k+1;
else
b=k;
}
if(b==j && a[b] == x)
return b;
return -2;
}
int ln_poz_kegy(int a[], int n, int x)
{
int b=0, j=n-1;
while(b < j)
{
int k=(b+j+1)/2;
if(a[k] > x)
j=k-1;
else
b=k;
}
return b;
}
int lk_poz_negy(int a[], int n, int x)
{
int b=0, j=n-1;
while(b < j)
{
int k=(b+j)/2;
if(a[k] >= x)
j=k;
else
b=k+1;
}
return b;
}
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[100001],N,M;
f>>N;
for (int i=0;i<N;i++)
f>>a[i];
f>>M;
for (int i=1;i<=M;i++)
{
int x,y;
f>>y;
f>>x;
switch(y)
{
case 0:
g<<ln_poz_egyenlo(a,N,x) + 1<<"\n";
break;
case 1:
g<<ln_poz_kegy(a,N,x) + 1<<"\n";
break;
case 2:
g<<lk_poz_negy(a,N,x) + 1<<"\n";
break;
}
}
return 0;
}