Submission #397591

#TimeUsernameProblemLanguageResultExecution timeMemory
397591ak2006Garage (IOI09_garage)C++14
100 / 100
3 ms332 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using vb = vector<bool>; using vvb = vector<vb>; using vi = vector<int>; using vvi = vector<vi>; using vl = vector<ll>; using vvl = vector<vl>; using vc = vector<char>; using vvc = vector<vc>; const ll mod = 1e9 + 7,inf = 1e18; #define pb push_back #define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int main() { int n,m; cin>>n>>m; vi r(n + 1),w(m + 1),ans(m + 1); vb taken(n + 1,false); vi pos(m + 1,-1); for (int i = 1;i<=n;i++)cin>>r[i]; for (int i = 1;i<=m;i++)cin>>w[i]; int x = 2 * m; queue<int>q; while (x--){ int i; cin>>i; if (i < 0){ i = -i; taken[pos[i]] = 0; while (!q.empty()){ int cur = q.front(); int index = -1; for (int j = 1;j<=n;j++){ if (!taken[j]){index = j;break;} } if (index == -1)break; pos[cur] = index; ans[cur] = r[index] * w[cur]; taken[index] = 1; q.pop(); } } else{ for (int j = 1;j<=n;j++){ if (!taken[j]){pos[i] = j;taken[j] = 1;ans[i] = r[j] * w[i];break;} } if (pos[i] == -1) q.push(i); } } ll tot = 0; for (int i = 1;i<=m;i++)tot += (ll)ans[i]; cout<<tot; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...