Syseľ pracuje ako manažér softvérových projektov. Práve teraz sa snaží vymyslieť, ako čo najoptimálnejšie priradiť programátorov ku dvom projektom. O každom z programátorov vie, ako je zbehlý v technológiach potrebných na ten-ktorý projekt. Pracuje s obmedzeným rozpočtom, preto si na každý z projektov môže dovoliť iba určitý počet programátorov, zvyšok žiaľ bude musieť prepustiť. Syseľ by chcel nájsť čo najlepšie priradenie programátorov ku projektom. Pomôžete mu s týmto problémom?
Syseľ má $n$ programátorov. Z jeho výpočtov mu vyšlo, že na projekte A môže pracovať $x$ programátorov a na projekte B môže pracovať $y$ programátorov. Zároveň pre každého programátora vie, aké veľké skúsenosti má s technológiami na projekte A a na projekte B. Hodnoty skúseností pre $i$-teho programátora si označíme $a_i$ a $b_i$. Skúsenosť tímu, ktorý pracuje na projekte A je súčet hodnôt $a_i$ všetkých programátorov pracujúcich na tomto projekte. Analogicky, skúsenosť tímu pracujúceho na projekte B je súčet hodnôt $b_i$ všetkých programátorov, ktorí na ňom pracujú. Sysľovým cieľom je maximalizovať súčet skúseností oboch tímov, pričom jeden programátor môže pracovať iba na jednom projekte naraz. Povedané formálne, snažíme sa maximalizovať: $$\sum_{i \in P_A} a_i + \sum_{i \in P_B} b_i \text{,}$$ pričom $P_A$ je množina programátorov pracujúcich na projekte A a $P_B$ je množina programátorov na projekte B.
Na prvom riadku sa nachádzajú tri čísla $n$, $x$, $y$ – celkový počet programátorov a počty programátorov, ktorí môžu pracovať na projekte A a na projekte B. Pritom platí: $x + y \leq n$, $2 \leq n \leq 10^5$ a $x, y \geq 1$.
Druhý riadok obsahuje čísla $a_1, \dots, a_n$ ($1 \leq a_i \leq 10^9$), kde $a_i$ je skúsenosť $i$-teho programátora s technológiami používanými na projekte A.
Tretí riadok obsahuje čísla $b_1, \dots, b_n$ ($1 \leq b_i \leq 10^9$), kde $b_i$ je skúsenosť $i$-teho programátora s technológiami na projekte B.
Na výstupe sa nachádza jedno celé číslo – maximálny možný súčet skúseností oboch tímov.
Pre jednotlivé sady testov navyše platia nasledovné obmedzenia. Za vyriešenie každej sady získate 2 body.
| číslo sady | obmezenie na $a_i$, $b_i$ | obmedzenie na $n$ |
|---|---|---|
| 1 | $1 \leq a_i, b_i \leq 1000$ | $2 \leq n \leq 10$ |
| 2 | $1 \leq a_i, b_i \leq 10^9$ | $2 \leq n \leq 10^2$ |
| 3 | $1 \leq a_i, b_i \leq 10^9$ | $2 \leq n \leq 10^3$ |
| 4 | $1 \leq a_i, b_i \leq 10^9$ | $2 \leq n \leq 10^5$ |
Input:
5 2 2
1 3 4 5 2
5 3 2 1 4
Output:
18
Syseľ priradí tretieho a štvrtého programátora na projekt A. Prvého a piateho priradí na projekt B. Druhého prepustí. Takto získa tím A s celkovou skúsenosťou $4+5 = 9$ a tím B s celkovou skúsenosťou $5+4 = 9$
Input:
4 2 2
10 8 8 3
10 7 9 4
Output:
31
Skúsenosť tímu A je $10+8 = 18$ a tímu B je $9+4 = 13$
Input:
5 3 1
5 2 5 1 7
6 3 1 6 3
Output:
23
Korešpondenčný seminár z programovania zastrešuje občianske združenie Trojsten.
Trojsten, o.z.
FMFI UK, Mlynská dolina
842 48 Bratislava
Programátorská súťaž pre základoškolákov
Materiály a úlohy na výučbu programovania
Intenzívny programátorský zážitok v lete