Cod sursa(job #1307176)
Utilizator | Pavlov Ion pavlov.ion | Data | 1 ianuarie 2015 15:05:49 |
---|---|---|---|
Problema | Range minimum query | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.46 kb |
#include<fstream>
#include<algorithm>
#define MAXN 20005
using namespace std;
long int N,M;
int P[MAXN][MAXN],A[MAXN];
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int main(){
int i,j,x,y;
cin>>N>>M;
for(i=1;i<=N;i++)
cin>>A[i];
for(i=1;i<=N;i++)
P[i][i]=i;
for(i=1;i<=N;i++)
for(j=i+1;j<=N;j++)
if(A[P[i][j-1]]<A[j])
P[i][j]=P[i][j-1];
else
P[i][j]=j;
while(M--){
cin>>x>>y;
cout<<A[P[x][y]]<<"\n";
}
return 0;
}