java代码空间如何优化,全MLE,N为1e5过49,后MLE
以下是代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
public class Main {
static int n,m;
static final int N = (int)1e5+10;
static int dp[][] = new int[N][21];
public static void main(String[] args) throws IOException{
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter cout = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
n = (int) in.nval;
in.nextToken();
m = (int) in.nval;
for(int i = 1; i <= n; ++i) {
in.nextToken();
dp[i][0] = (int) in.nval;
}
for(int j = 1; (1<<j) <= n; ++j)
for(int i = 1; i + (1<<j)-1 <=n; ++i)
dp[i][j] = Math.max(dp[i][j-1], dp[i+(1<<(j-1))][j-1]);
while(m--!=0) {
in.nextToken();
int l = (int) in.nval;
in.nextToken();
int r = (int) in.nval;
cout.println(f(l,r));
}
cout.flush();
}
static int f(int l, int r) {
int len = r - l + 1;
int k = (int)(Math.log(len) / Math.log(2)) ;
return Math.max(dp[l][k],dp[r-(1<<k)+1][k]);
}
}