# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
198704 | 2020-01-27T12:35:18 Z | SamAnd | Garage (IOI09_garage) | C++17 | 7 ms | 376 KB |
#include <bits/stdc++.h> using namespace std; const int N = 102, M = 2003; int n, m; int r[N], w[M]; int u[M]; int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= n; ++i) scanf("%d", &r[i]); for (int i = 1; i <= m; ++i) scanf("%d", &w[i]); int ans = 0; queue<int> q; set<int> s; for (int i = 1; i <= n; ++i) s.insert(i); for (int ii = 0; ii < m * 2; ++ii) { int i; scanf("%d", &i); if (i > 0) { if (!s.empty()) { u[i] = (*s.begin()); s.erase(u[i]); ans += w[i] * r[u[i]]; } else q.push(i); } else { i *= -1; s.insert(u[i]); while (!q.empty() && !s.empty()) { int i = q.front(); q.pop(); u[i] = (*s.begin()); s.erase(u[i]); ans += w[i]* r[u[i]]; } } } printf("%d\n", ans); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 376 KB | Output is correct |
2 | Correct | 5 ms | 256 KB | Output is correct |
3 | Correct | 5 ms | 128 KB | Output is correct |
4 | Correct | 5 ms | 256 KB | Output is correct |
5 | Correct | 5 ms | 376 KB | Output is correct |
6 | Correct | 5 ms | 376 KB | Output is correct |
7 | Correct | 5 ms | 248 KB | Output is correct |
8 | Correct | 5 ms | 376 KB | Output is correct |
9 | Correct | 5 ms | 376 KB | Output is correct |
10 | Correct | 5 ms | 376 KB | Output is correct |
11 | Correct | 5 ms | 376 KB | Output is correct |
12 | Correct | 5 ms | 376 KB | Output is correct |
13 | Correct | 6 ms | 376 KB | Output is correct |
14 | Correct | 6 ms | 376 KB | Output is correct |
15 | Correct | 6 ms | 376 KB | Output is correct |
16 | Correct | 6 ms | 376 KB | Output is correct |
17 | Correct | 6 ms | 376 KB | Output is correct |
18 | Correct | 6 ms | 376 KB | Output is correct |
19 | Correct | 6 ms | 376 KB | Output is correct |
20 | Correct | 7 ms | 376 KB | Output is correct |