#include<bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int T;
T = 1;
while(T--){
int n;
cin >> n;
vector<int> a(n);
for(int i = 0; i < n; ++i){
cin >> a[i];
}
sort(a.begin(), a.end());
vector<int> f(n + 1, -1e9);
vector<int> ans(n + 1);
f[0] = 0;
for(int i = 1; i <= n; ++i){
if(i >= a[i - 1]){
f[i] = f[i - a[i - 1]] + 1;
ans[f[i] + n - i] = max(ans[f[i] + n - i], i);
}else{
ans[n - a[i - 1] + 1] = max(ans[n - a[i - 1] + 1], i);
}
f[i] = max(f[i], f[i - 1]);
}
for(int i = n - 1; i >= 2; --i){
ans[i] = max(ans[i], ans[i + 1]);
}
int q;
cin >> q;
while(q--){
int k;
cin >> k;
cout << ans[k] << '\n';
}
}
}
409. Longest Palindrome | 1574A - Regular Bracket Sequences |
1574B - Combinatorics Homework | 1567A - Domino Disaster |
1593A - Elections | 1607A - Linear Keyboard |
EQUALCOIN Equal Coins | XOREQN Xor Equation |
MAKEPAL Weird Palindrome Making | HILLSEQ Hill Sequence |
MAXBRIDGE Maximise the bridges | WLDRPL Wildcard Replacement |
1221. Split a String in Balanced Strings | 1002. Find Common Characters |
1602A - Two Subsequences | 1555A - PizzaForces |
1607B - Odd Grasshopper | 1084A - The Fair Nut and Elevator |
1440B - Sum of Medians | 1032A - Kitchen Utensils |
1501B - Napoleon Cake | 1584B - Coloring Rectangles |
1562B - Scenes From a Memory | 1521A - Nastia and Nearly Good Numbers |
208. Implement Trie | 1605B - Reverse Sort |
1607C - Minimum Extraction | 1604B - XOR Specia-LIS-t |
1606B - Update Files | 1598B - Groups |