#include <bits/stdc++.h>
#include <queue>
using namespace std;
int n, m;
int val[101];
int tingd[2001];
map<int, int> hvar;
priority_queue<int> rod;
queue<int> bilar;
int tala;
int svar = 0;
int main() {
cin >> n >> m;
for (int x = 1; x < 1+n; x++) {
cin >> val[x];
rod.push(-x);
}
for (int x = 1; x < 1+m; x++) {
cin >> tingd[x];
}
for (int x = 0; x < m*2; x++) {
cin >> tala;
if (tala > 0) {
if (!rod.empty()) {
hvar[tala] = abs(rod.top());
rod.pop();
//cout << hvar[tala] << ' ' << tala << ' ' << val[hvar[tala]]*tingd[tala] << endl;
svar += val[hvar[tala]]*tingd[tala];
}
else {
bilar.push(tala);
}
}
else {
tala = -tala;
rod.push(-hvar[tala]);
if (!bilar.empty()) {
tala = bilar.front();
bilar.pop();
hvar[tala] = abs(rod.top());
rod.pop();
//cout << "??" << endl;
svar += val[hvar[tala]]*tingd[tala];
}
}
}
cout << svar << endl;
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
1 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
1 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
1 ms |
348 KB |
Output is correct |
13 |
Correct |
1 ms |
344 KB |
Output is correct |
14 |
Correct |
1 ms |
348 KB |
Output is correct |
15 |
Correct |
1 ms |
348 KB |
Output is correct |
16 |
Correct |
1 ms |
388 KB |
Output is correct |
17 |
Correct |
2 ms |
348 KB |
Output is correct |
18 |
Correct |
2 ms |
348 KB |
Output is correct |
19 |
Correct |
2 ms |
348 KB |
Output is correct |
20 |
Correct |
2 ms |
348 KB |
Output is correct |