Pagini recente » Cod sursa (job #675131) | Cod sursa (job #884888) | Cod sursa (job #314124) | Cod sursa (job #360228) | Cod sursa (job #1046866)
#include <iostream>
#include <fstream>
#include <vector>
std::ifstream fin("rmq.in");
std::ofstream fout("rmq.out");
int n, m;
std::vector<int> rmq[100001];///[10001];
int max(int a, int b)
{
if(a > b)
{
return a;
}
return b;
}
int min(int a, int b)
{
if(a < b)
{
return a;
}
return b;
}
void citire()
{
int p;
fin>>n>>m;
for(int i = 0; i < n; i++)
{
fin>>p;
rmq[0].push_back(p);
// for(int j = 0; j < n - i; j++)
// {
// fin>>rmq[i][j];
// }
// fin>>rmq[0][i];
}
for(int i = 1; i < n; i++)
{
for(int j = 0; j < n - i; j++)
{
rmq[i].push_back(min(rmq[i-1][j], rmq[i-1][min(j+1, n-1)]));
// rmq[i][j] = min(rmq[i-1][j], rmq[i-1][min(j+1, n-1)]);
// A[i][j][k] = max(A[i][j][k-1], A[i][j+2k-1][k-1], A[i+2k-1][j][k-1], A[i+2k-1][j+2k-1][k-1])
}
}
// for(int i = 0; i < n; i++)
// {
// for(int j = 0; j < n - i; j++)
// {
// std::cout<<rmq[i][j]<<' ';
// }
// std::cout<<'\n';
// }
int p1, p2;
for(int i = 0; i < m; i++)
{
fin>>p1>>p2;
// p1--;
// p2--;
p2 -= p1;
p1--;
// p2--;
fout<<rmq[p2][p1]<<'\n';
}
}
int main()
{
citire();
return 0;
}