In this HackerEarth The chocolate rooms problem solution your task is to take some chocolates from N different rooms. Each room contains the Pi number of chocolates of the same or different brands. You are given an integer K.

Write a program to determine whether you can visit each room and find K different brands of chocolates.


HackerEarth The chocolate rooms problem solution


HackerEarth The chocolate rooms problem solution.

#include <iostream>
#include <map>
#include <string.h>

using namespace std;


int main()
{
    int t;
    scanf("%d", &t);
    while(t--) {
        int n, k;
        string line = "";
        scanf("%d%d", &n, &k);
        map<string, bool> m;
        string s;
        int ans = 0;
        for (int i = 0; i < n; i++) {
          int p;
            scanf("%d", &p);
            while (p--) {
                cin >> s;
                if (m.find(s) == m.end()) {
                    ans++;
                    m[s]= 1;
                }
            }
 
        }
        if (ans >= k) printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}


Second solution

#include<bits/stdc++.h>
using namespace std;
#define ll        long long int
#define MOD       1000000007
#define si(a)     scanf("%d", &a)
#define sl(a)     scanf("%lld", &a)
#define pi(a)     printf("%d", a)
#define pl(a)     printf("%lld", a)
#define pn        printf("\n")
ll pow_mod(ll a, ll b) {
  ll res = 1;
  while(b) {
    if(b & 1)
      res = (res * a) % MOD;
    a = (a * a) % MOD;
    b >>= 1;
  }
  return res;
}
int main() {
  int t;
  si(t);
  assert(t >= 1 && t <= 5);
  while(t--) {
    int n, k, p;
    si(n); si(k);
    assert(n >= 1 && n <= 100);
    assert(k >= 1 && k <= 1000);
    string str;
    set<string> s;
    bool poss = false;
    for(int i = 0; i < n; ++i) {
      si(p);
      assert(p >= 1 && p <= 100);
      for(int j = 0; j < p; ++j) {
        cin >> str;
        assert(str.length() >= 1 && str.length() <= 10);
        s.insert(str);
      }
    }
    if(s.size() >= k) {
      poss = true;
    }
    if(poss) {
      printf("Yes\n");
    } else {
      printf("No\n");
    }
  }
  return 0;
}