Cod sursa(job #1804358)

Utilizator Grama911Grama Andrei Grama911 Data 12 noiembrie 2016 14:57:36
Problema Range minimum query Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <fstream>
#include <algorithm>
#define NMAX 100001

using namespace std;

FILE *f = fopen("rmq.in", "r"),
*g = fopen("rmq.out", "w");

int n, m, a[NMAX];

	int minint(int li, int lf)
	{
		if (li == lf)
			return a[li];
		else
		{
			int mij = (li + lf) / 2;
			int m1 = minint(li, mij);
			int m2 = minint(mij + 1, lf);
			return min(m1, m2);
		}
	}

int main()
{
	fscanf(f, "%d%d", &n, &m);
	for (int i = 1; i <= n; i++)
		fscanf(f, "%d", &a[i]);
	for (int i = 1; i <= m; i++)
	{
		int x, y;
		fscanf(f, "%d%d", &x, &y);
		fprintf(g, "%d\n", minint(x, y));
	}
	return 0;
}