Your Digits

Your Digits
Codeforces medium

لديك \(k_2\) من الخانات 2، و \(k_3\) من الخانات 3، و \(k_5\) من الخانات 5، و \(k_6\) من الخانات 6. تريد تكوين الأعداد 32 و 256 باستخدام هذه الخانات (كل خانة مرة واحدة على الأكثر) لتعظيم مجموعها الكلي. جد أقصى مجموع ممكن.

Solution

نستطيع ملاحظة أنه من الأفضل تكوين العدد 256 قبل 32. لذا سنقوم بصنع 256 طالما لدينا خانات كافية، ثم باستخدام الخانات المتبقية نصنع 32.

العدد 256 يحتاج الخانات 2، 5، 6 مرة واحدة لكل منها، لذا يمكننا صنع أقصى عدد من هذه الأعداد يساوي \(k = \min(k_2, k_5, k_6)\).

باستخدام الخانات المتبقية، وهي \(k_3\) من الخانات 3 و \(k_2 - k\) من الخانات 2 (بعد استخدام \(k\) منها لصنع 256)، يمكننا تكوين \(\min(k_3, k_2-k)\) من الأعداد 32.

#include<iostream>
using namespace std;

int main () {
    int k2, k3, k5, k6;
    cin >> k2 >> k3 >> k5 >> k6;

    int k = min(min(k2, k5), k6);

    int solution = k * 256 + min(k3, k2 - k) * 32;
    cout << solution << '\n';
}