Начиная с 1-индексированного массива нулей и списка операций, для каждой операции я должен добавить значение к каждому из элементов массива между двумя указанными индексами включительно. После того, как все операции были выполнены, я должен вернуть максимальное значение в массиве. Но неправильный ответ приходит каждый раз для большинства тестовых случаев, а для некоторых тестов ограничение по времени превышает. Пожалуйста, помогите мне решить эту проблему.
Я использую функцию arrayManipulation, чтобы получить количество элементов массива и массив запросов. Функция обновления используется для обновления (добавления элемента) массива.
import java.util.*;
import java.util.Arrays;
public class sample
{
public static void main(String args[])
{
int maximum=0;
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int queries[][]=new int[m][3];
for(int x=0;x<m;x++)
{
for(int y=0;y<3;y++)
{
queries[x][y]=sc.nextInt();
}
}
maximum=arrayManipulation(n,queries);
System.out.println(maximum);
}
public static int arrayManipulation(int num,int qry[][])
{
int a=0,b=0,k=0;
int max=Integer.MIN_VALUE;
int arr[]=new int[num];
int arr2[]=new int[num];
for(int i=0;i<num;i++)
{
arr[i]=0;
}
for(int j=0;j<qry.length;j++)
{
for(int kl=0;kl<qry[0].length;kl++)
{
a=qry[j][kl];
b=qry[j][kl+1];
k=qry[j][kl+2];
break;
}
arr2=update(a,b,k,arr);
int lengtharr2=arr2.length;
max=Math.max(max,arr2[lengtharr2-1]);
}
return max;
}
public static int[] update(int a1,int b1, int k1,int array[])
{
for(int i=a1;i<b1;i++)
{
array[i]+=k1;
}
Arrays.sort(array);
return array;
}
}
Ввод: 10 означает количество элементов массива, а 3 - нет. запросов, которые состоят из значений a, b, k, которые имеют следующие значения: левый индекс, правый индекс и слагаемое
10 3
1 5 3
4 87
6 9 1
Мой вывод:
11
Ожидаемый вывод:
10