Submission #137704

#TimeUsernameProblemLanguageResultExecution timeMemory
137704mechfrog88Homecoming (BOI18_homecoming)C++14
0 / 100
1049 ms10024 KiB
#include "homecoming.h" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #pragma GCC optimize("unroll-loops,no-stack-protector") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") using namespace __gnu_pbds; using namespace std; template <typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; typedef long long ll; typedef long double ld; long long int solve(int n, int k, int *a, int *b){ ll tans = 0; for (int z=0;z<n;z++){ tans += a[z]; tans -= b[z]; } ll ans = 0; vector <bool> buy(n,false); vector <bool> proc(n,false); while (true){ bool ok = false; for (int z=0;z<n;z++){ if (proc[z]) continue; ll c = 0; ll x = z; ll price = 0; vector <ll> erm; while (c < k){ c++; if (!buy[x]) { price += b[x]; erm.push_back(x); } x++; x %= n; } if (a[z] >= price){ proc[z] = true; ok = true; for (ll i : erm){ buy[i] = true; } ans += a[z]-price; } } if (!ok) break; } return max(ans,tans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...