You are on page 1of 3

#include<iostream>

#include<bits/stdc++.h>
#include<string>
#include<vector>
#include<map>

using namespace std;

void printWords(string str, vector<string> v)


{ /*
// word variable to store word
string word;
// making a string stream
stringstream iss(str);

// Read and print each word.


while (iss >> word){
if(word=="ana"){
v.push_back(word);
break;
}
//cout<<word<<endl;
}*/
}

class Cuptor {
public:
string nume;
vector<string> subsisteme;

bool dispuneDeSubsisteme(vector<string> subsis_necesare)


{
bool dispune = true;

for(int i=0;i<subsis_necesare.size();i++)
{
bool subsis_necesar_gasit = false;
for(int j=0;j<this->subsisteme.size();j++)
{
if(subsis_necesare[i]==this->subsisteme[j])
{
subsis_necesar_gasit = true;
break;
}
}

if(subsis_necesar_gasit == false)
{
dispune = false;
break;
}
}
return dispune;
}

};
vector<string>subsys ={"microwave", "grill","ventilator","steam","crisp",
"rotisserie", "convection"};

map<string,vector<string>> cuptoare = {
{"P0001M",{subsys[0]}},
{"POOO1MG",{subsys[0],subsys[1]}},
{"P0002M",{subsys[0],subsys[1],subsys[2]}},
{"P0003", { subsys[0], subsys[1],
subsys[2], subsys[3]}},
{"P0004", { subsys[1], subsys[4],
subsys[5]}},
{"P0004M", { subsys[1], subsys[4],
subsys[5], subsys[0]}},
{"P0003X", { subsys[0], subsys[1],
subsys[2], subsys[3], subsys[6]}},
{"P00034X", { subsys[0], subsys[1],
subsys[2], subsys[3], subsys[4], subsys[5], subsys[6]}}
};

vector<string> texts = {
"place the tray and [microwave] for 4 minutes",
"let it cool for 5 minutes",
"[grill] for 5 minutes to give it a brown coat"
};

//citeste reteta si obtine subsistemele necesare


vector<string> getSubsisNecesare(){
int nr_pasi;
cin>>nr_pasi;

vector<string> subsis_necesare;

for(int pas=0;pas<nr_pasi;pas++){
string instr;
cin>>instr;

int first = instr.find("[");


int last = instr.find("]");

string subsis_necesar;

if(first != -1 && last != -1){


subsis_necesar = instr.substr (first+1,last-first-1);
subsis_necesare.push_back(subsis_necesar);
}
}

return subsis_necesare;
}

int main(){

Cuptor cuptor;
cin>>cuptor.nume;
cuptor.subsisteme = cuptoare[cuptor.nume];

int nr_retete;
cin>>nr_retete;

int nr_retete_posibile_cu_acest_cuptor=0;

for(int nr_reteta=0;nr_reteta<nr_retete;nr_reteta++)
{
vector<string> subsis_necesare = getSubsisNecesare(); //din reteta

//verificam daca cuptorul dispune de subsistemele necesare

if(cuptor.dispuneDeSubsisteme(subsis_necesare)){
nr_retete_posibile_cu_acest_cuptor++;
}
}

cout << "Numar retete posibile: " << nr_retete_posibile_cu_acest_cuptor-1;

/*
vector<string> v;
int k;//nr de pasi pt prepararea retetei
for(int i=0;i<n;i++){//
cin>>k;//nr pasi
int name;
for(int j=0;j<k;j++)
{
string s;
vector<string> v;
while(cin>>s){
printWords(s,v);
//v.push_back();
}
for(int l=0;l<v.size();l++){
cout<<v[l];
}
//for (auto it = v.begin(); it != v.end(); ++it)
/*for(int m=0;m<k;m++){
v.erase(std::remove(v.begin(), v.end(), "["), v.end());
v.erase(std::remove(v.begin(), v.end(), "]"), v.end());
}
}
}*/
}

You might also like