Pagini recente » Cod sursa (job #2503041) | Cod sursa (job #1889908) | Cod sursa (job #2544283) | Rating oprea cristiana (cristinica) | Cod sursa (job #1770099)
#include <cstdio>
#define N 100010
int n, v[N];
int solve0(int val)
{
int li = 1;
int lf = n;
int m = (li + lf) / 2;
while (li<=lf)
{
if (v[m] == val&&v[m] < v[m + 1])
return m;
if (v[m] <= val)
li = m + 1;
else
lf = m - 1;
m = (li+lf)/2;
}
return -1;
}
int solve1(int val)
{
int li = 1;
int lf = n;
int m = (li + lf) / 2;
while (li <= lf)
{
if (v[m] <= val)
li = m + 1;
else
lf = m - 1;
m = (li + lf) / 2;
}
return lf;
}
int solve2(int val)
{
int li = 1;
int lf = n;
int m = (li + lf) / 2;
while (li <= lf)
{
if (v[m] >= val)
lf = m - 1;
else
li = m + 1;
m = (li + lf) / 2;
}
return m+1;
}
int main()
{
int i, m, val, tip;
FILE *fin=fopen("cautbin.in", "r");
FILE *fout=fopen("cautbin.out", "w");
fscanf(fin,"%d", &n);
for (i = 1; i <= n; ++i)
fscanf(fin,"%d", &v[i]);
fscanf(fin,"%d", &m);
while (m--)
{
fscanf(fin,"%d%d", &tip, &val);
if (tip == 0)
fprintf(fout,"%d\n", solve0(val));
if (tip == 1)
fprintf(fout,"%d\n", solve1(val));
if (tip == 2)
fprintf(fout,"%d\n", solve2(val));
}
fclose(fin);
fclose(fout);
return 0;
}