1793E - Velepin and Marketing - CodeForces Solution


binary search data structures dp greedy sortings two pointers *2600

Please click on ads to support us..

C++ Code:

#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';
		}
		
	}
}


Comments

Submit
0 Comments
More Questions

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