Cod sursa(job #1769423)

Utilizator Grama911Grama Andrei Grama911 Data 2 octombrie 2016 15:20:53
Problema Cautare binara Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define N 100010
int n, v[N];
int solve0(int val)
{
	int max = -1000000000;
	int i = 1, ok = 0;
	while (v[i] <= val)
	{
		if (v[i] == val&&v[i] < v[i + 1])
		{
			max = i;
			ok = 1;
		}
		i++;
	}
	if (ok == 1)
		return max;
	else
		return -1;
}
int solve1(int val)
{
	int i = 1;
	while (v[i] <= val)
		i++;
	return i - 1;
}
int solve2(int val) 
{
	int i = 1;
	while (v[i] <= val)
	{
		i++;
		if (v[i] == v[i + 1])
			break;
	}
	if (v[i - 1] == val)
		return i - 1;
	else
		return i;
}
int main() 
{
	int i, m, val, tip;
	freopen("cautbin.in", "r", stdin);
	freopen("cautbin.out", "w", stdout);
	scanf("%d", &n);
	for (i = 1; i <= n; ++i)
		scanf("%d", &v[i]);
	scanf("%d", &m);
	while (m--) 
	{
		scanf("%d%d", &tip, &val);
		if (tip == 0)
			printf("%d\n", solve0(val));
		if (tip == 1)
			printf("%d\n", solve1(val));
		if (tip == 2)
			printf("%d\n", solve2(val));
	}
	exit(0);
}