Pagini recente » Cod sursa (job #2623688) | Cod sursa (job #722156) | Cod sursa (job #835657) | Cod sursa (job #322277) | Cod sursa (job #840488)
Cod sursa(job #840488)
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <math.h>
#define MAX 100000
int v[MAX], n;
int cautare(int i, int j, int nr)
{
if (i >= j) return -1;
int ind = ceil((float) (i+j) / 2);
if (v[ind] == nr) return ind;
else if (v[ind] < nr) return cautare(ind, j, nr);
else return cautare(i, ind, nr);
}
int main()
{
int i, m, t, nr, p;
FILE* in = fopen("cautbin.in", "r");
FILE* out = fopen("cautbin.out", "w");
fscanf(in, "%d", &n);
for (i = 0; i<n; i++)
fscanf(in, "%d", &v[i]);
fscanf(in, "%d", &m);
for (i = 0; i<m; i++)
{
fscanf(in, "%d %d", &t, &nr);
p = cautare(0, n-1, nr);
//printf("p is %d \n", p);
switch (t)
{
case 0:
if (p != -1)
while (v[p+1] == nr)
p++;
break;
case 1:
if (p != n-1)
while (v[p+1] == nr)
p++;
break;
case 2:
if (p != 0)
while (v[p-1] == nr)
p--;
break;
}
fprintf(out, "%d\n", p+1);
}
fclose(in); fclose(out);
return 0;
}