Submission #566965

#TimeUsernameProblemLanguageResultExecution timeMemory
566965shrimbKitchen (BOI19_kitchen)C++17
31 / 100
2 ms324 KiB
#pragma GCC optimize ("Ofast") #pragma GCC target ("avx,avx2,fma") #include"bits/stdc++.h" using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; template<class x> using ordered_set = tree<x, null_type,less<x>, rb_tree_tag,tree_order_statistics_node_update>; #define int long long #define endl '\n' #define mod 1000000007 //\ #define mod 1686876991 const int maxn = 301; int n, m, k, cntAK, cntBN, smA, smB, ans = 1e9; int A[maxn], B[maxn]; signed main () { cin.tie(0)->sync_with_stdio(0); cin >> n >> m >> k; for (int i = 0 ; i < n ; i++) { cin >> A[i]; smA += A[i]; if (A[i] < k) cntAK++; } for (int i = 0 ; i < m ; i++) { cin >> B[i]; cntBN += min(n, B[i]); smB += B[i]; } if (m < k || smB < smA || cntBN/n < k || cntAK) { // assert(0); cout << "Impossible\n"; return 0; } if (m <= 15) { // subtasks 1 and 2 for (int i = 0 ; i < (1 << m) ; i++) { smB = 0, cntBN = 0; if (__builtin_popcount(i) < k) continue; for (int j = 0 ; j < m ; j++) { if (i & (1 << j)) { smB += B[j]; cntBN += min(n, B[j]); } } if (smB >= smA and cntBN/n >= k) ans = min(ans, smB - smA); } cout << ans << endl; return 0; } } /* impossible: - M < K - sum of B < sum of A - the number of (B >= N) is < K - theres an A which is < K */

Compilation message (stderr)

kitchen.cpp:17:1: warning: multi-line comment [-Wcomment]
   17 | //\
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...