Cod sursa(job #1069372)

Utilizator IonMosnoiIon Mosnoi IonMosnoi Data 29 decembrie 2013 21:45:40
Problema Range minimum query Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <stdio.h>

using namespace std;
const int  nmax = 10300;
int n,m,a[nmax],p[nmax][nmax];

void create(){
	for(int i =1 ;i<=n;i++)p[i][i]=i;
	
	for(int i =1 ;i<=n;i++)
	  for(int j =i+1 ;j<=n;j++){
	  	if(a[j]<a[p[i][j-1]])p[i][j]=j;
	  	else p[i][j]=p[i][j-1];
	  }
}

int main(){
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%ld%ld",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
create();
int x,y;
for(int i=1;i<=m;i++){
	scanf("%d %d",&x,&y);
	printf("%d\n",a[p[x][y]]);
}

fclose(stdout); fclose(stdin);
return 0;
}