Cod sursa(job #389003)

Utilizator dany123Florea Daniel dany123 Data 31 ianuarie 2010 17:09:27
Problema Range minimum query Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
using namespace std;

ifstream fin ("rmq.in");
ofstream fout ("rmq.out");

int n,m,a,b,min1,c1,ok;

int main () {
	fin>>n>>m;
	int *v= new int [n];
	int *v2= new int [n];
	for (int i2=1;i2<=n;i2++){
		fin>>v[i2];
		if (v[i2]==1) v2[c1++]=i2;
	}
		
	for (int i=1;i<=m;i++){
		fin>>a>>b;
		ok=0;
		for (int i3=0;i3<c1;i3++) { if (v2[i3]>=a && v2[i3]<=b) {fout<<"1\n"; ok=1; break;}}
		if (ok==0) {
		min1=v[a];
		if (v[a]==1) fout<<"1\n";
			else {
				for (int j=a;j<=b;j++)
					if (v[j]==1) {fout<<"1\n"; j=b+1;}
						else if (v[j]<min1) min1=v[j];
				fout<<min1<<'\n';
		}	}
	}
	delete[] v;
	fin.close();
	fout.close();
	return 0;
}