#include <bits/stdc++.h>
using namespace std;
long long findMaximumProfit(vector<int>& category, vector<int>& price) {
int n = category.size();
// 1. اجمع كل الأسعار حسب الكاتيجوري
unordered_map<int, vector<int>> items;
for (int i = 0; i < n; i++) {
items[category[i]].push_back(price[i]);
}
vector<int> openCategory; // أرخص حاجة من كل كاتيجوري
vector<int> rest; // باقي الحاجات الأغلى
// 2. لكل كاتيجوري: خد أرخص حاجة ووزع الباقي
for (auto &kv : items) {
auto &v = kv.second;
sort(v.begin(), v.end()); // رتب الأسعار
openCategory.push_back(v[0]); // أرخص واحد لفتح الكاتيجوري
for (int i = 1; i < (int)v.size(); i++) {
rest.push_back(v[i]); // الباقي يتحط في rest
}
}
// 3. رتبهم
sort(openCategory.begin(), openCategory.end()); // الأرخص الأول
sort(rest.rbegin(), rest.rend()); // الأغلى في الآخر
// 4. احسب الربح
long long profit = 0;
int distinct = 0;
// بيع الأرخص (فتح الكاتيجوريز)
for (int p : openCategory) {
distinct++;
profit += 1LL * p * distinct;
}
// بيع الباقي (بعد ما الكاتيجوريز كلها اتفتحت)
for (int p : rest) {
profit += 1LL * p * distinct;
}
return profit;
}
int main() {
vector<int> category = {3, 1, 2, 3};
vector<int> price = {2, 1, 4, 4};
cout << findMaximumProfit(category, price) << endl;
// Output: 29
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpsb25nIGxvbmcgZmluZE1heGltdW1Qcm9maXQodmVjdG9yPGludD4mIGNhdGVnb3J5LCB2ZWN0b3I8aW50PiYgcHJpY2UpIHsKICAgIGludCBuID0gY2F0ZWdvcnkuc2l6ZSgpOwoKICAgIC8vIDEuINin2KzZhdi5INmD2YQg2KfZhNij2LPYudin2LEg2K3Ys9ioINin2YTZg9in2KrZitis2YjYsdmKCiAgICB1bm9yZGVyZWRfbWFwPGludCwgdmVjdG9yPGludD4+IGl0ZW1zOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBpdGVtc1tjYXRlZ29yeVtpXV0ucHVzaF9iYWNrKHByaWNlW2ldKTsKICAgIH0KCiAgICB2ZWN0b3I8aW50PiBvcGVuQ2F0ZWdvcnk7IC8vINij2LHYrti1INit2KfYrNipINmF2YYg2YPZhCDZg9in2KrZitis2YjYsdmKCiAgICB2ZWN0b3I8aW50PiByZXN0OyAgICAgICAgIC8vINio2KfZgtmKINin2YTYrdin2KzYp9iqINin2YTYo9i62YTZiQoKICAgIC8vIDIuINmE2YPZhCDZg9in2KrZitis2YjYsdmKOiDYrtivINij2LHYrti1INit2KfYrNipINmI2YjYsti5INin2YTYqNin2YLZigogICAgZm9yIChhdXRvICZrdiA6IGl0ZW1zKSB7CiAgICAgICAgYXV0byAmdiA9IGt2LnNlY29uZDsKICAgICAgICBzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSk7ICAgICAvLyDYsdiq2Kgg2KfZhNij2LPYudin2LEKICAgICAgICBvcGVuQ2F0ZWdvcnkucHVzaF9iYWNrKHZbMF0pOyAvLyDYo9ix2K7YtSDZiNin2K3YryDZhNmB2KrYrSDYp9mE2YPYp9iq2YrYrNmI2LHZigogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgKGludCl2LnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgIHJlc3QucHVzaF9iYWNrKHZbaV0pOyAgICAgLy8g2KfZhNio2KfZgtmKINmK2KrYrdi3INmB2YogcmVzdAogICAgICAgIH0KICAgIH0KCiAgICAvLyAzLiDYsdiq2KjZh9mFCiAgICBzb3J0KG9wZW5DYXRlZ29yeS5iZWdpbigpLCBvcGVuQ2F0ZWdvcnkuZW5kKCkpOyAvLyDYp9mE2KPYsdiu2LUg2KfZhNij2YjZhAogICAgc29ydChyZXN0LnJiZWdpbigpLCByZXN0LnJlbmQoKSk7ICAgICAgICAgICAgICAgLy8g2KfZhNij2LrZhNmJINmB2Yog2KfZhNii2K7YsQoKICAgIC8vIDQuINin2K3Ys9ioINin2YTYsdio2K0KICAgIGxvbmcgbG9uZyBwcm9maXQgPSAwOwogICAgaW50IGRpc3RpbmN0ID0gMDsKCiAgICAvLyDYqNmK2Lkg2KfZhNij2LHYrti1ICjZgdiq2K0g2KfZhNmD2KfYqtmK2KzZiNix2YrYsikKICAgIGZvciAoaW50IHAgOiBvcGVuQ2F0ZWdvcnkpIHsKICAgICAgICBkaXN0aW5jdCsrOwogICAgICAgIHByb2ZpdCArPSAxTEwgKiBwICogZGlzdGluY3Q7CiAgICB9CgogICAgLy8g2KjZiti5INin2YTYqNin2YLZiiAo2KjYudivINmF2Kcg2KfZhNmD2KfYqtmK2KzZiNix2YrYsiDZg9mE2YfYpyDYp9iq2YHYqtit2KopCiAgICBmb3IgKGludCBwIDogcmVzdCkgewogICAgICAgIHByb2ZpdCArPSAxTEwgKiBwICogZGlzdGluY3Q7CiAgICB9CgogICAgcmV0dXJuIHByb2ZpdDsKfQoKaW50IG1haW4oKSB7CiAgICB2ZWN0b3I8aW50PiBjYXRlZ29yeSA9IHszLCAxLCAyLCAzfTsKICAgIHZlY3RvcjxpbnQ+IHByaWNlICAgID0gezIsIDEsIDQsIDR9OwoKICAgIGNvdXQgPDwgZmluZE1heGltdW1Qcm9maXQoY2F0ZWdvcnksIHByaWNlKSA8PCBlbmRsOyAKICAgIC8vIE91dHB1dDogMjkKfQo=