java的评测机的内存判定是否消耗过大了,例如糖果传递该题,一直是爆了125MB内存,但是我在其他平台上找到相同的题目,同样的代码只消耗了40MB内存 ,我开的数组是2个1e6的long和一个1e6的int,相当于开了5e6的int,大约只有20mb,不懂为什么能超这么多
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static int N= (int) (1e6+5);
static int a[]=new int[N];
static long s[]=new long[N];
static long c[]=new long[N];
static int n;
static void solve(){
n=in.nextInt();
for(int i=1;i<=n;i++){
a[i]=in.nextInt();
s[i]=s[i-1]+a[i];
}
long avg=s[n]/n;
c[1]=0;
for(int i=2;i<=n;i++) c[i]=s[i-1]-avg*(i-1);
Arrays.sort(c,1,n+1);
long res=0;
for (int i=1;i<=n;i++) res=res+Math.abs(c[i]-c[(n+1)/2]);
System.out.println(res);
}
public static void main(String[] args) {
solve();
out.flush();
}
static PrintWriter out=new PrintWriter(System.out);
static FastReader in = new FastReader();
static class FastReader{
StringTokenizer st;
BufferedReader br;
FastReader(){
br=new BufferedReader(new InputStreamReader(System.in));
}
String next(){
while (st==null||!st.hasMoreElements()){
try {
st=new StringTokenizer(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt(){
return Integer.parseInt(next());
}
}
}