Cod sursa(job #292745)

Utilizator cristiprgPrigoana Cristian cristiprg Data 31 martie 2009 13:50:12
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdio>
#define DIM 100005

FILE *out = fopen("cautbin.out", "w");
long long v[DIM], nr;
int n, m, type;

void search(int st, int dr)
{
	if (st > dr )
	{
		if (type == 0)
			fprintf(out, "-1\n");

		if (type == 2)
			fprintf(out, "%d\n", st);
		return;
	}

	if (st == dr && type == 1)
	{
		fprintf(out, "%d\n", st - 1);
		return ;
	}


	int mij = st + (dr - st) / 2;
	if (v[mij] == nr)
	{
		fprintf(out, "%d\n", mij);
		return;
	}

	if (v[mij] > nr)
		search(st, mij - 1);
	else
		search(mij + 1, dr);
}


int main()
{
	FILE *f = fopen("cautbin.in", "r");
	fscanf(f, "%d", &n);
	int i;
	for (i = 1; i <= n; i++)
		fscanf(f, "%lld", &v[i]);

	fscanf(f, "%d", &m);

	for (i = 1; i <= m; i++)
	{
		fscanf(f, "%d%lld", &type, &nr);
		search(1, n);
	}

	fclose(f);
	fclose(out);
	return 0;
}