Pagini recente » Cod sursa (job #998704) | Cod sursa (job #626760) | Cod sursa (job #119317) | Cod sursa (job #2063378) | Cod sursa (job #159395)
Cod sursa(job #159395)
#include<fstream.h>
#include<math.h>
//using namespace std;
int n,m;
int a[10], r[5][7], lg[9];
inline int min(int x, int y){
return x<y?x:y;
}
int main(){
int i, j, st, dr;
ifstream f("rmq.in");
f>>n>>m;
for(i=0;i<n;i++)
f>>a[i];
lg[1]=0;
for(i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
for(i=0;i<n-1;i++)
r[0][i]=min(a[i],a[i+1]);
int c=1;
for(j=1;j<=lg[n]+1;j++){
c<<=1;
for(i=0;i<n-c;i++)
r[j][i]=min(r[j-1][i],r[j-1][i+(c>>1)]);
}
ofstream g("rmq.out");
for(i=0;i<m;i++){
f>>st>>dr;
st--;dr--;
g<<min(r[lg[dr-st]][st], r[lg[dr-st]][dr-pow(2,lg[dr-st])])<<'\n';
}
g.close();
f.close();
return 0;
}