# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
879615 | amin_2008 | Garage (IOI09_garage) | C++17 | 1 ms | 604 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
/* author: amin */
#pragma GCC optimize ("O3")
#include <bits/stdc++.h>
#define ios ios_base::sync_with_stdio(0); \
cin.tie(0); \
cout.tie(0)
#define vi vector<int>v
#define vs vector<string>v
#define vc vector<char>v
#define ll long long
#define vl vector<ll>v
#define pb push_back
#define ins insert
#define ts to_string
#define st stoi
#define ull unsigned long long
#define endl '\n'
using namespace std;
int p[101], w[2001];
set<int> s;
map<int,int> mp;
deque<int> d;
const int MOD = 1e9 + 7;
void solve()
{
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; i++)
s.ins(i);
for(int i = 1; i <= n; i++)
cin >> p[i];
for(int i = 1; i <= m; i++)
cin >> w[i];
int res = 0;
for(int i = 1; i <= 2 * m; i++) {
int car;
cin >> car;
if (car > 0) {
if (!s.empty()) {
int pp = *s.begin();
res += w[car] * p[pp];
s.erase(s.begin());
mp[car] = pp;
}
else {
d.push_back(car);
}
}
else {
int pp = mp[-car];
if (!d.empty()) {
int pc = d[0];
res += w[pc] * p[pp];
mp[pc] = pp;
d.pop_front();
}
else {
s.ins(pp);
}
}
}
cout << res << endl;
}
int main ()
{
ios;
int t;
//cin >> t;
t = 1;
while(t--){
solve();
}
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |