Vasile joacă (din nou!) jocul său preferat cu împuşcături. Personajul său are la brâu N
arme, aşezate în N
huse speciale, numerotate de la 1
la N
. Arma din husa i
are puterea pb
i
(1≤i≤N
).
În camera armelor a găsit M
arme, aşezate pe perete, în M
locaţii, numerotate de la 1
la M
. Pentru fiecare armă j
(1≤j≤M
) este cunoscută puterea sa pc
j
.
Vasile poate înlocui arme pe care le are la brâu cu arme aflate pe perete în camera armelor. La o înlocuire el ia arma de pe perete din locaţia j
(1≤j≤M
) şi o pune la brâu în husa i
(1≤i≤N
), iar arma din husa i
o pune pe perete în locaţia j
.
Cerinţă
Scrieţi un program care să determine suma maximă a puterilor armelor pe care le va avea la brâu Vasile după efectuarea înlocuirilor.
Date de intrare
Fișierul de intrare arme.in
conține pe prima linie numerele naturale N M
, reprezentând numărul de arme pe care le are la brâu, respectiv numărul de arme aflate în camera armelor. Pe a doua linie se află N
numere naturale pb
1
pb
2
… pb
N
reprezentând în ordine puterile armelor pe care Vasile le are la brâu. Pe a treia linie se află M
numere naturale pc
1
pc
2
… pc
M
reprezentând în ordine puterile armelor aflate în camera armelor. Numerele scrise pe aceeaşi linie sunt separate prin spaţiu.
Date de ieșire
Fișierul de ieșire arme.out
va conține o singură linie pe care va fi scrisă suma maximă a puterilor armelor de la brâul lui Vasile, după efectuarea înlocuirilor.
Restricții și precizări
1 ≤ N, M ≤ 1000
- Puterile armelor sunt numere naturale
≤10000
.
Exemplu
arme.in
3 23 1 74 5
arme.out
16
#include <bits/stdc++.h> using namespace std; ifstream cin("arme.in"); ofstream cout("arme.out"); int n , m , a[2002] , s; int main() { cin >> n >> m; for(int i = 1 ; i <= n ; i++) cin >> a[i]; for(int i = 1 ; i <= m ; i++) cin >> a[n + i]; sort(a + 1 , a + n + m + 1); for(int i = n + m ; i > m ; i--) s += a[i]; cout << s; }