สมมุติว่าเรากำลังทำการทดลองทางฟิสิกส์ เราได้รับค่า n คู่และค่าเกณฑ์ k ค่าแรกของคู่แต่ละค่าจะถูกบวกเข้ากับมูลค่ารวม และค่าที่สองของคู่เงินจะถูกบวกเข้ากับมูลค่ารวมอีกค่าหนึ่งด้วย ตอนนี้ เราตรวจสอบว่ามูลค่ารวมเป็นค่าต่ำสุดหรือค่า (k - ผลรวม) เป็นค่าต่ำสุด เราทำสิ่งนี้สำหรับทั้งผลรวมแล้วเพิ่มและพิมพ์ผลลัพธ์
ดังนั้น หากอินพุตเป็น n =4, k =20, ค่า ={{3, 5}, {4, 3}, {2, 1}, {4, 4}} ผลลัพธ์จะเป็น 14
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
a := 0, b = 0 for initialize i := 0, when i < n, update (increase i by 1), do: a := a + first value of values[i] b := b + second value of values[i] print(min((a, k - a) + minimum of b and k - b))
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h>
using namespace std;
#define N 100
void solve(int n, int k, vector<pair<int,int>> values) {
int a = 0, b = 0;
for(int i = 0; i < n; i++){
a += values[i].first;
b += values[i].second;
}
cout<<min(a, k - a) + min(b, k - b);
}
int main() {
int n = 4, k = 20;
vector<pair<int,int>> values = {{3, 5}, {4, 3}, {2, 1}, {4, 4}};
solve(n, k, values);
return 0;
} อินพุต
4, 20, {{3, 5}, {4, 3}, {2, 1}, {4, 4}} ผลลัพธ์
14