Как решить эту проблему на C, C++ или java, пожалуйста, ответьте на этот вопрос как можно скорее
Задача состоит в том, чтобы найти минимальную сумму произведений двух массивов одинакового размера, учитывая, что на первом массиве допустимо k модификаций. В каждой модификации один элемент массива первого массива может быть увеличен или уменьшен на 2.
Примечание-сумма произведения является суммированием (A[i]*B[i]) для всех i от 1 до n, где n-размер обоих массивов
входной формат:
Первая строка входных данных содержит n и k, разделенные пробелами
Вторая строка содержит массив A (модифицируемый массив) со значениями, разделенными пробелами
Третья строка содержит массив B (немодифицируемый массив) со значениями, разделенными пробелами
выходной формат:
Выведите минимальную сумму произведений двух массивов
Ограничения:
1 ≤ N ≤ 10^5
0 ≤ / A[i]/, / B[i] / ≤ 10^5
0 ≤ K ≤ 10^9
Пример ввода и вывода
СНО. Ввода-Вывода
1.
3 5
1 2 -3
-2 3 -5
-31
2.
5 3
2 3 4 5 4
3 4 2 3 2
25
Что я уже пробовал:
#include<iostream> #include<math.h> using namespace std; int main() { long long int A[10^5],B[10^5]; int N; int pro,temp,diff; int maxDiff=0,minSum=0; int K; cin>>N>>K; for(int i=0;i<n;i++)> { cin>>A[i]; cin>>B[i]; } for(int i=0;i<n;i++)> { pro=A[i]*B[i]; if(pro<0 && B[i]<0) temp=(A[i]+2 * K)* B[i]; else if(pro<0 && A[i]<0) temp=(A[i]-2 * K)* B[i]; else if(pro>0 && A[i]<0) temp=(A[i]+ 2* K)* B[i]; else if(pro>0 && A[i]>0) temp=(A[i]- 2*K) *B[i]; diff=abs(pro-temp); if(diff>maxDiff) maxDiff=diff; minSum=minSum+pro; } minSum=minSum-maxDiff; cout<<"\n"<<minSum; }
Patrice T
В чем проблема ?