Pagini recente » Cod sursa (job #1353374) | Cod sursa (job #94372) | Cod sursa (job #162319) | Cod sursa (job #2147124) | Cod sursa (job #1686465)
#include <stdio.h>
using namespace std;
FILE *in , *out;
const long int N = 100000;
unsigned int el[N];
short int allInOne(short int n, short int x, short int c, unsigned int vec[]){
int j,pas;
if(x == 0){
pas = 1<<n;
j=0;
while(pas != 0){
if(j+pas <= n && vec[j+pas] <= c) j+= pas;
pas /= 2;
}
if(vec[j] == c) return j;
else return -1;
}else if(x == 1){
pas = 1<<n;
j=0;
while(pas != 0){
if(j+pas <= n && vec[j+pas] <= c) j+= pas;
pas /= 2;
}
return j;
}else if(x == 2){
pas = 1<<n;
j=0;
while(pas != 0){
if(j+pas <= n && vec[j+pas] < c) j+= pas;
pas /= 2;
}
return 1+j;
}
}
int main()
{
short int n, m ,i, x, c;
in = fopen("cautbin.in" , "r");
fscanf(in, "%hd" , &n);
for(i=0;i<n;i++) fscanf(in, "%u" , &el[i]);
fscanf(in, "%hd" , &m);
out = fopen("cautbin.out" , "w");
for(i=0;i<m;i++){
fscanf(in , "%hd %hd" , &x, &c);
fprintf(out , "%hd\n" , allInOne(n,x,c,el) + 1);
}
return 0;
}