제출 #1011042

#제출 시각아이디문제언어결과실행 시간메모리
1011042feukicGarage (IOI09_garage)C++14
100 / 100
1 ms484 KiB
#include <iostream> #include <vector> #include <string> #include <utility> #include <map> #include <set> #include <unordered_map> #include <unordered_set> #include <stack> #include <queue> #include <deque> #include <algorithm> #include <cmath> using namespace std; int findFree(vector<int> arr) { for (int i = 0; i < (int)arr.size(); i++) { if (arr[i] == 0) { return i; } } return arr.size(); } int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); int n, m; cin >> n >> m; vector<int> rate(n); for (int i = 0; i < n; i++) { cin >> rate[i]; } vector<int> cars(m); for (int i = 0; i < m; i++) { cin >> cars[i]; } queue<int> q; for (int i = 0; i < 2 * m; i++) { int c; cin >> c; q.push(c); } int sum = 0; int free = 0; vector<int> parking(n); queue<int> waiting; while (q.size()) { free = findFree(parking); if (q.front() > 0) { if (free == n) { waiting.push(q.front()); } else { sum += rate[free] * cars[q.front() - 1]; parking[free] = q.front(); } q.pop(); } else { for (int i = 0; i < n; i++) { if (-q.front() == parking[i]) { parking[i] = 0; } } if (waiting.size()) { q.front() = waiting.front(); waiting.pop(); } else { q.pop(); } } } cout << sum << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...