#include "jelly.h"
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using vi = vector<int>;
using vl = vector<ll>;
using vb = vector<bool>;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using str = string;
#define all(a) a.begin(), a.end()
#define print(a) for (auto elem:a) cout<<elem<<' '; cout<<'\n'
#define segprep(b) resize(1<<((int)ceil(log2(b.size()))+1))
#define FOR(a) for (int _ = 0; _ < a; _++)
int n;
int solve1(int &x, int &y, vi &a, vi &b){
vi for_a, for_b;
int best = 0;
for (int mask = 0; mask < (1<<n); mask++){
for_a.clear();
for_b.clear();
for (int i = 0; i < n; i++){
if (mask&(1<<i)){
for_b.push_back(b.at(i));
}
else{
for_a.push_back(a.at(i));
}
}
ranges::sort(for_a);
ranges::sort(for_b);
// print(for_a);
// print(for_b);
int ans = 0, a_sum = 0, b_sum = 0;
for (int i = 0; i < (int)for_a.size(); i++){
a_sum += for_a.at(i);
if (a_sum > x){
ans += i;
break;
}
}
if (a_sum < x) ans += for_a.size();
for (int i = 0; i < (int)for_b.size(); i++){
b_sum += for_b.at(i);
if (b_sum > y){
ans += i;
break;
}
}
// cout<<"mask: "<<mask<<'\n';
// print(for_a);
// print(for_b);
// cout<<"ans: "<<ans<<'\n';
if (b_sum < x) ans += for_b.size();
best = max(best, ans);
}
return best;
}
int solve3(int &x, vi &a){
// O CHUJ CHODZI
sort(all(a));
for (int i = 0; i < n; i++){
// cerr<<"x: "<<x<<", a[i]: "<<a.at(i)<<'\n';
if (x >= a.at(i)){
x -= a.at(i);
continue;
}
return i;
}
return n;
}
int find_maximum_unique(int x, int y, vi a, vi b) {
n = a.size();
if (y == 0) return solve3(x, a);
if (n <= 12) return solve1(x, y, a, b);
return 0;
}
// static int n, x, y;
// static std::vector<int> a, b;
// int main() {
// assert(scanf("%d %d %d", &n, &x, &y) == 3);
// a.resize(n);
// b.resize(n);
// for (int i = 0; i < n; i++) {
// assert(scanf("%d %d", &a[i], &b[i]) == 2);
// }
// fclose(stdin);
// int answer = find_maximum_unique(x, y, a, b);
// printf("%d\n", answer);
// }
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |