Answer:
This is the C++ code for the above problem:
#include<bits/stdc++.h>
using namespace std;
int computeFunLevel(int start, int duration, int prefs[], int ngames, int plan[]) {
if(start + duration > 365) { //this is to check wether duration is more than total no. of vaccation days
return -1;
}
int funLevel = 0;
for(int i=start; i<start+duration; i++) { //this loop runs from starting point till
//start + duration to sum all the funlevel in plan.
funLevel = funLevel + prefs[plan[i]];
}
return funLevel;
}
int findBestVacation(int duration, int prefs[], int ngames, int plan[]) {
int max = 0, index = 0, sum = 0 ;
for(int i=1; i<11; i++){ //this loop is to run through whole plan arry
sum = 0; //sum is initialized with zero for every call in plan ,
//in this case loop should run to 366,but for example it is 11
//as my size of plan array is 11
for(int j=0; j<duration; j++) { // this loop is for that index to index+duration to calc
//fun from that index
sum = sum + prefs[plan[i]];
}
if(sum>max) { //this is to check max funlevel and update the index from which max fun can be achieved
max = sum;
index = i;
}
}
return index;
}
int main() {
int ngames = 5;
int prefs[] = { 1,2,0,5,2 };
int plan[] = { 0,2,0,3,3,4,0,1,2,3,3 };
int start = 1;
int duration = 4;
cout << computeFunLevel(start, duration, prefs, ngames, plan) << endl;
cout << computeFunLevel(start, 555, prefs, ngames, plan) << endl;
cout << findBestVacation(4, prefs, ngames, plan) << endl;
}
The screen of the program is given below.