Cod sursa(job #804363)
| Utilizator | Data | 29 octombrie 2012 18:14:45 | |
|---|---|---|---|
| Problema | Range minimum query | Scor | 20 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <iostream>
#include <fstream>
using namespace std;
int a[10005];
int dp[10005][10005];
int main()
{
int n,m;
ifstream f("rmq.in");
ofstream g("rmq.out");
f>>n>>m;
for(int i=1;i<=n;i++)
{
f>>a[i];
dp[i][i]=i;
}
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
if( a[dp[i][j-1]] < a[j])
{
dp[i][j]=dp[i][j-1];
}
else
dp[i][j]=j;
}
for(int i=1;i<=m;i++)
{
int x,y;
f>>x>>y;
g<<a[dp[x][y]]<<"\n";
}
return 0;
}
