Cod sursa(job #1964312)
Utilizator | Data | 13 aprilie 2017 12:41:02 | |
---|---|---|---|
Problema | Range minimum query | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.34 kb |
#import<fstream>
std::ifstream f("rmq.in");std::ofstream g("rmq.out");
int q[20][100005],i=2,j,x,y,n,m,lg[100005];main(){
for(f>>n>>m;i<=n+1;lg[i]=lg[i/2]+1,f>>q[0][i++-1]);
for(i=1;(1<<i)<=n;i++)for(j=1;j+(1<<i)-1<=n;)q[i][j++]=std::min(q[i-1][j],q[i-1][j+(1<<(i-1))]);
while(m--)f>>x>>y,n=lg[y-x+1],g<<std::min(q[n][x],q[n][y+1-(1<<n)])<<'\n';}