トピック:
分析:考えてみたところ、以前はこの質問について小さな質問があったようです。当時は乗数か何かのようで、とにかく2の倍数を使っていました。dpもあります。
まあ、同じことがソリューションにも当てはまります。
残りは最初に試す人によって書かれています。
いいえ、前のものを反転させた後、それは本当に行われました。
前のブログ
私はそれについて少し考えました、なぜjが最初にそして次に私は:
価値観は確かにこのようなものです。
コード:
#include<bits/stdc++.h>
using namespace std;
int A[100005];
int m,n;
int A1[100005][100];
void f(int x1,int x2)
{
int k=0;
while(1)
{
if((1<<(k+1)) > x2-x1+1 ) break;
k++;
}
cout<<max(A1[x1][k],A1[x2-(1<<k)+1][k])<<endl;
}
int main()
{
cin>>m>>n;
for(int i=1;i<=m;i++) cin>>A[i];
for(int i=1;i<=m;i++) A1[i][0]=A[i];
for(int j=1;(1<<j)<=m;j++)
for(int i=1;i+(1<<j)-1<=m;i++)
A1[i][j]=max(A1[i][j-1],A1[i+(1<<(j-1))][j-1]);
for(int i=1;i<=n;i++)
{
int a,b; cin>>a>>b;
f(a,b);
}
}
Tは、タイトルによって与えられた入力が役に立たないからです。