Click Here to go back to the homepage.

Prerequisites? Solution:


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

int main(){
    // #ifndef TESTING
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);
    // #endif

    int nSelectedCourses, categories;
    cin >> nSelectedCourses >> categories;
    while(true){
        bool selectedCourses[10000] = {};
        for(int i = 0; i < nSelectedCourses; i++){
            int selectedCourse;
            cin >> selectedCourse;
            selectedCourses[selectedCourse] = true;
        }
        bool fulfilled = true;
        for(int i = 0; i < categories; i++){
            int fulfillingCourses, requirement;
            cin >> fulfillingCourses >> requirement;
            int fulfilledCount = 0;
            bool fulfilledCategory = false;
            for(int j = 0; j < fulfillingCourses; j++){
                int fulfillingCourse;
                cin >> fulfillingCourse;
                if(fulfilled && !fulfilledCategory){
                    if(selectedCourses[fulfillingCourse]){
                        if(++fulfilledCount >= requirement){
                            fulfilledCategory = true;
                        }
                    }
                }
            }
            if(fulfilledCategory == false){
                fulfilled = false;
            }
        }
        if(fulfilled){
            cout << "yes" << endl;
        } else {
            cout << "no" << endl;
        }

        cin >> nSelectedCourses;
        if(nSelectedCourses > 0){
            cin >> categories;
        } else {
            break;
        }
    }
    
    
    return 0;   
}