762B - USB vs PS2 - CodeForces Solution


greedy implementation sortings two pointers *1400

Please click on ads to support us..

C++ Code:

// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

int main() {
	int usb, ps2, both; cin >> usb >> ps2 >> both;
	int m; cin >> m;
	long long um[300000]; memset(um, 0, sizeof(um));
	long long pm[300000]; memset(pm, 0, sizeof(pm));
	int umNum = 0, pmNum = 0;
	for (int i = 0; i < m; i++) {
		long long p; string kind;
		cin >> p >> kind;
		if (kind == "USB") {
			um[umNum++] = p;
		} else {
			pm[pmNum++] = p;
		}
	}
	sort(um, um+umNum);
	sort(pm, pm+pmNum);
	int umInd = 0, pmInd = 0;
	int count = 0;
	long long cost = 0;
	while (umInd < min(umNum, usb)) {
		cost += um[umInd++];
		count++;
	}
	while (pmInd < min(pmNum, ps2)) {
		cost += pm[pmInd++];
		count++;
	}
	while ((pmInd < pmNum || umInd < umNum) && both > 0) {
		if (pmInd < pmNum && umInd < umNum) {
			if (um[umInd] < pm[pmInd]) {
				cost += um[umInd++];
			} else {
				cost += pm[pmInd++];
			}
			count++;
			both--;
			continue;
		}
		if (pmInd < pmNum) {
			cost += pm[pmInd++];
		} else {
			cost += um[umInd++];
		}
		count++;
		both--;
	}
	cout << count << " " << cost << endl;
}


Comments

Submit
0 Comments
More Questions

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
1602B - Divine Array
1594B - Special Numbers
1614A - Divan and a Store
2085. Count Common Words With One Occurrence
2089. Find Target Indices After Sorting Array
2090. K Radius Subarray Averages
2091. Removing Minimum and Maximum From Array
6. Zigzag Conversion
1612B - Special Permutation
1481. Least Number of Unique Integers after K Removals
1035. Uncrossed Lines