Cho mảng n phần tử và giá trị S. Tìm K trong mảng sao cho: thay tất cả phần tử > K bằng K, tổng mảng mới = S. Không tìm thấy -> -1.
Ví dụ
Array: {12,6,3,7,8}, S=15 -> K=3
Final array: {3,3,3,3,3}, Sum=15
Thuật toán
getVal(arr,n,S)
SẮP XẾP arr TĂNG DẦN
sum=0
VỚI i=0 ĐẾN n-1
NẾU sum + arr[i]*(n-i) == S -> TRẢ VỀ arr[i]
sum += arr[i]
TRẢ VỀ -1
Chương trình C++ ví dụ
#include <iostream>
#include <algorithm>
using namespace std;
int getVal(int arr[], int n, int S) {
sort(arr,arr+n);
int sum=0;
for(int i=0;i
Kết quả
3