-
Notifications
You must be signed in to change notification settings - Fork 28
/
chocola.cpp
82 lines (68 loc) · 1.81 KB
/
chocola.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[])
{
int t;
cin >> t;
for (int asfa = 0; asfa < t; ++asfa)
{
long long m, n;
cin >> m >> n;
--m; --n;
if (m == 0 && n == 0) { cout << "0" << endl; continue; }
int a[1000], b[1000];
long long suma = 0, sumb = 0;
for (int i = 0; i < m; ++i)
{
cin >> a[i];
suma += a[i];
}
for (int i = 0; i < n; ++i)
{
cin >> b[i];
sumb += b[i];
}
if (m == 0) { cout << sumb << endl; continue; }
if (n == 0) { cout << suma << endl; continue; }
long long mnozitelja = 1, mnoziteljb = 1;
sort(a, a+m); sort(b, b+n);
int poza = m - 1, pozb = n - 1;
long long sol = 0;
while (true)
{
if (a[poza] > b[pozb])
{
sol += a[poza] * mnozitelja;
++mnoziteljb;
--poza;
if (poza == -1)
{
while(pozb != -1)
{
sol += b[pozb] * mnoziteljb;
--pozb;
}
break;
}
}
else
{
sol += b[pozb] * mnoziteljb;
--pozb;
++mnozitelja;
if (pozb == -1)
{
while(poza != -1)
{
sol += a[poza] * mnozitelja;
--poza;
}
break;
}
}
}
cout << sol << endl;
}
return 0;
}