/// Raihan Ruhin /// CSE, Jahangirnagar University. /// Dhaka-Bangladesh. /// id: raihanruhin (topcoder / codeforces / codechef / uva / uvalive / spoj), 3235 (lightoj) /// mail: raihanruhin@ (yahoo / gmail / facebook) /// blog: ruhinraihan.blogspot.com #include<bits/stdc++.h> using namespace std; #define SET(a) memset(a,-1,sizeof(a)) #define CLR(a) memset(a,0,sizeof(a)) #define PI acos(-1.0) #define MOD 1000000007 #define MX 100010 int mx; string ans; struct Trie{ int cnt; Trie *child[26]; Trie() { cnt=0; for(int i=0;i<26;i++) child[i]=NULL; } }; void insert(string s, Trie *ob) { int sl=s.size(); for(int i=0;i<sl;i++) { int val=s[i]-'a'; if(ob->child[val]==NULL) ob->child[val]=new Trie(); if(i==sl-1) { ob->child[val]->cnt++; if(ob->child[val]->cnt > mx) { mx=ob->child[val]->cnt; ans=s; } } ob=ob->child[val]; } return; } void delete_memory(Trie *ob) { for(int i=0;i<26;i++) if(ob->child[i]!=NULL) delete_memory(ob->child[i]); delete ob; } int main() { ios_base::sync_with_stdio(0);cin.tie(0); int tc, kk=1, n, sl; string s; char ch; while(getline(cin, s)) { Trie *root=new Trie(); mx=0; while(s!="#") { string tmp=""; sl=s.size(); for(int i=0;i<sl;i++) { if(s[i]>='A' && s[i]<='Z') s[i]=tolower(s[i]); if(s[i]>='a' && s[i]<='z') tmp+=s[i]; else if(tmp.size()>0) { insert(tmp, root); tmp=""; } } if(tmp.size()>0) insert(tmp, root); getline(cin, s); } if(mx) cout<<setw(4)<<mx<<" "<<ans<<"\n"; delete_memory(root); } return 0; }
Wednesday, 23 September 2015
Most wanted word (UVALive 2006, Regionals 2000 >> South Pacific)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment