import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
long arr[]=new long[n];
long m = in.nextLong();
for(int a0 = 0; a0 < m; a0++){
long a = in.nextLong();
long b = in.nextLong();
long k = in.nextLong();
for(int i=(int)a-1;i<(int)b;i++)
arr[i]+=k;
}
long large=-999;
for(int i=0;i<n;i++)
{ if(arr[i]>large)
large=arr[i];
}
System.out.println(large);
in.close();
}
}
这是我对#34;的回答。您将获得一个大小为n的列表(1索引),用零初始化。您必须对列表执行操作并输出列表中所有n个元素的最大值。对于每个操作,您将获得三个整数a,b和k,并且您必须将值k添加到从索引a到b(包括两者)的所有元素。&#34; 但是我得到了&#34; Timedout错误&#34;它的一半。任何人都可以在这里提出一些想法吗?
答案 0 :(得分:0)
尝试在循环中使用long as counter,为什么要转换为int? 如果你将long转换为int,你可能会出现溢出错误,并且可能永远不会满足循环的结束条件
for(long i=a-1;i<b;i++)