Pagini recente » Cod sursa (job #360808) | Cod sursa (job #2418373) | Cod sursa (job #2467231) | Cod sursa (job #551643) | Cod sursa (job #3166665)
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int rmq[18][100010],n,q;
int main()
{
f>>n>>q;
for(int i=1;i<=n;i++)
f>>rmq[0][i];
for(int i=1,pas=1;pas<=n;i++,pas*=2)
for(int j=1;j<=n-pas;j++)
rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+pas]);
for(;q;q--)
{
int a,b,exp,pow;
f>>a>>b;
exp=31-__builtin_clz(b-a+1);
pow=1<<exp;
g<<min(rmq[exp][a],rmq[exp][b-pow+1]);
}
return 0;
}
//5 4
/////1 2 3 4 5
//
// 1 5 6 4 3
//
//2 4= 4
//1 2= 1
//3 5 = 3
//1 4 = 1
//mh<=mg<=ma
//#include <bits/stdc++.h>
//
//using namespace std;
//ifstream f("aib.in");
//ofstream g("aib.out");
//const int N=100010;
//int n,m,op,aib[N];
//void adun(int i,int v)
//{
// for(;i<=n;i+=i&(-i))
// aib[i]+=v;
//}
//int suma(int i)
//{
// int sol=0;
// for(;i;i-=i&(-i))
// sol+=aib[i];
// return sol;
//}
//int suma(int a,int b)
//{
// return suma(b)-suma(a-1);
//}
//int main()
//{
// f>>n>>m;
// for(int i=1;i<=n;i++)
// {
// int x;
// f>>x;
// adun(i,x);
// }
// for(int i=1;i<=m;i++)
// {
// f>>op;
// if(op==0)
// {
// int x,y;
// f>>x>>y;
// adun(x,y);
// }
// else
// if(op==1)
// {
// int a,b;
// f>>a>>b;
// g<<suma(a,b)<<'\n';
// }
// else
// {
// int lo=0,hi=n,mi,a;
// f>>a;
// while(hi-lo>1)
// {
// mi=(hi+lo)/2;
// if(suma(mi)<a)
// lo=mi;
// else
// hi=mi;
// }
// if(suma(hi)==a)
// g<<hi<<'\n';
// else
// g<<"-1\n";
//
// }
// }
// return 0;
//}