PROBLEM LINK:
Author: Praveen Dhinwa
Testers: Misha Chorniy
Editorialist: Praveen Dhinwa
DIFFICULTY:
cakewalk
PREREQUISITES:
none
PROBLEM:
An exam can be of three levels, level 1, 2 and 3. There are n exams being conducted, each exam will be conducted in a particular city, for a particular level and provide a fixed discount.
For each level, you have to provide maximum discount you can obtain and find the city in which this discount is applicable. If there are more than one cities for a discount, choose the city with less index.
SOLUTION
The solution is to iterate over all the exams and maintain for each level, what is the maximum discount you can get, and update it for each exam.
int n;
scanf("%d", &n);
vector<int> which_city(3, (int) 1e9), maxDiscounts(3);
for (int i = 0; i < n; i++) {
int city, level, discount;
scanf("%d %d %d", &city, &level, &discount);
level--;
if (discount > maxDiscounts[level]) {
maxDiscounts[level] = discount;
which_city[level] = city;
} else if (discount == maxDiscounts[level]) {
maxDiscounts[level] = discount;
which_city[level] = min(which_city[level], city);
}
}
for (int level = 0; level < 3; level++) {
printf("%d %d\n", maxDiscounts[level], which_city[level]);
}