Pagini recente » Diferente pentru utilizator/stargold2 intre reviziile 203 si 202 | Diferente pentru utilizator/djok intre reviziile 111 si 110 | Monitorul de evaluare | Profil Cartofen | Cod sursa (job #2686768)
#include <iostream>
#include <fstream>
#define PUTERE_MAXIMA 17
using namespace std;
ifstream fi("date.in");
ofstream fo("date.out");
int n;
int m;
int mat[20][100005];
void contruire_matrice()
{
for(int i=1;(1<<i)<=n;i++)
{
int pw=(1<<i);
for(int j=1;j+pw-1<=n;j++)
mat[i][j]=min(mat[i-1][j],mat[i-1][j+pw/2]);
}
}
int get_answear(int a ,int b)
{
for(int i=PUTERE_MAXIMA;i>=0;i--)
if(b-a+1>=(1<<i))
return min(mat[i][a],mat[i][b-(1<<i)+1]);
}
int main()
{
fi>>n>>m;
int L;
for(int i=1;i<=n;i++)
{
fi>>L;
mat[0][i]=L;
}
contruire_matrice();
int x,y;
while(m!=0)
{
fi>>x>>y;
fo<<get_answear(x,y)<<endl;
m--;
}
return 0;
}