We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
#include<iostream>#include<vector>#include<string>usingnamespacestd;classSpell{private:stringscrollName;public:Spell():scrollName(""){}Spell(stringname):scrollName(name){}virtual~Spell(){}stringrevealScrollName(){returnscrollName;}};classFireball:publicSpell{private:intpower;public:Fireball(intpower):power(power){}voidrevealFirepower(){cout<<"Fireball: "<<power<<endl;}};classFrostbite:publicSpell{private:intpower;public:Frostbite(intpower):power(power){}voidrevealFrostpower(){cout<<"Frostbite: "<<power<<endl;}};classThunderstorm:publicSpell{private:intpower;public:Thunderstorm(intpower):power(power){}voidrevealThunderpower(){cout<<"Thunderstorm: "<<power<<endl;}};classWaterbolt:publicSpell{private:intpower;public:Waterbolt(intpower):power(power){}voidrevealWaterpower(){cout<<"Waterbolt: "<<power<<endl;}};classSpellJournal{public:staticstringjournal;staticstringread(){returnjournal;}};stringSpellJournal::journal="";voidcounterspell(Spell*spell){/* Enter your code here */if(dynamic_cast<Fireball*>(spell)){Fireball*fireball=dynamic_cast<Fireball*>(spell);fireball->revealFirepower();}elseif(dynamic_cast<Frostbite*>(spell)){Frostbite*frostbite=dynamic_cast<Frostbite*>(spell);frostbite->revealFrostpower();}elseif(dynamic_cast<Thunderstorm*>(spell)){Thunderstorm*thunderstorm=dynamic_cast<Thunderstorm*>(spell);thunderstorm->revealThunderpower();}elseif(dynamic_cast<Waterbolt*>(spell)){Waterbolt*waterbolt=dynamic_cast<Waterbolt*>(spell);waterbolt->revealWaterpower();}else{stringscrollName=spell->revealScrollName();stringjournal=SpellJournal::journal;intm=scrollName.length();intn=journal.length();intdp[m+1][n+1];for(inti=0;i<=m;i++){for(intj=0;j<=n;j++){dp[i][j]=0;}}for(inti=1;i<=m;i++){for(intj=1;j<=n;j++){if(scrollName[i-1]==journal[j-1]){dp[i][j]=dp[i-1][j-1]+1;}else{dp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}}cout<<dp[m][n]<<endl;}}classWizard{public:Spell*cast(){Spell*spell;strings;cin>>s;intpower;cin>>power;if(s=="fire"){spell=newFireball(power);}elseif(s=="frost"){spell=newFrostbite(power);}elseif(s=="water"){spell=newWaterbolt(power);}elseif(s=="thunder"){spell=newThunderstorm(power);}else{spell=newSpell(s);cin>>SpellJournal::journal;}returnspell;}};intmain(){intT;cin>>T;WizardArawn;while(T--){Spell*spell=Arawn.cast();counterspell(spell);}return0;}
Magic Spells
You are viewing a single comment's thread. Return to all comments →
Here's code passed magic spells