You are to find all the two-word compound words in a dictionary. A two-word compound word is aword in the dictionary that is the concatenation of exactly two other words in the dictionary.InputStandard input consists of a number of lowercase words, one per
line, in alphabetical order. There willbe no more than 120,000 words.OutputYour output should contain all the compound words, one per line, in alphabetical order.Sample Inputaalienbornlesslienneverneverthelessnew
newbornthezebraSample Outputaliennewborn
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <climits>
#include <cstdio>
#include <cctype>
#include <queue>
#include <cmath>
#include <stack>
#include<set>
using namespace std;
int main()
{
string s1;
int i;
string s2;
set<string> s;
while(cin>>s1)
{
s.insert(s1);
}
set<string>::iterator it;
for(it=s.begin();it!=s.end();it++)
{
s2 = *it;
for(i=1;i<s2.length();i++)
{
if(s.find(s2.substr(0,i))!=s.end()&&s.find(s2.substr(i,s2.length()-i))!=s.end())
{
cout<<s2<<endl;
break;
}
}
}
return 0;
}
newbornthezebraSample Outputaliennewborn