fork(5) download
  1. #include <iostream>
  2. #include <map>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int t;
  8. cin>>t;
  9. while(t--)
  10. {
  11. map<int, int> mymap;
  12. int n;
  13. cin>>n;
  14.  
  15. for(int i=0;i<n;i++) {
  16. string s;
  17. cin>>s;
  18. int bm=0;
  19. for(int j=0;j<s.length();j++)
  20. bm |= (1<<(s[j]-'a'));
  21. mymap[bm]++;
  22. }
  23. int complete = (1<<('a'-'a')) | (1<<('e'-'a')) | (1<<('i'-'a')) | (1<<('o'-'a')) | (1<<('u'-'a'));
  24. int count = 0;
  25. int comparisons = 0;
  26. for (auto i=mymap.begin(); i!=mymap.end(); i++) {
  27. auto j=i;
  28. for(++j;j!=mymap.end();j++) {
  29. comparisons++;
  30. if((i->first | j->first)==complete) {
  31. count += i->second * j->second;
  32. cout << i->first <<" "<<j->first<<" :"<<i->second<<" "<<j->second<<endl;
  33. }
  34. }
  35. }
  36. auto special = mymap.find(complete);
  37. if (special!=mymap.end()) {
  38. count += special->second * (special->second -1) / 2;
  39. }
  40. cout<<"Result: "<<count<<" (found in "<<comparisons<<" comparisons)\n";
  41. }
  42. return 0;
  43. }
  44.  
Success #stdin #stdout 0s 15240KB
stdin
4
3
aeiou
aeiouaeiioouu
aaaeeuuuiioo
3
aaooaoaooa
uiieieiieieuuu
aeioooeeiiaiei
6
aaooaoaooa
uiieieiieieuuu
aeioooeeiiaiei
aoa
uuuuiiiieeee
aaooaaooooooo
18
aaooaoaooa
uiieieiieeaaaeieuuu
aeioooeeiiaiei
aoiiiia
uuuuiiiieeee
aaooaaooooooo
aaooaoaooa
uiieooieiieieoouuu
aeioooeeiiaiei
aoauuuuu
uuuuiiiieeee
aaooaaooooooo
aaoeeeoaoaooa
uiieieeeeeeeeeiieieuuu
aeioooeeiieeeeeeeaiei
aoaaaaaaaeea
iiiieeee
aaooaaooooo

stdout
Result: 3 (found in 0 comparisons)
16385 1048848 :1 1
16657 1048848 :1 1
Result: 2 (found in 3 comparisons)
16385 1048848 :3 2
16657 1048848 :1 2
Result: 8 (found in 3 comparisons)
272 1064961 :1 1
16385 1048848 :5 3
16385 1048849 :5 1
16385 1065232 :5 1
16401 1048848 :2 3
16401 1048849 :2 1
16401 1065232 :2 1
16641 1048848 :1 3
16641 1048849 :1 1
16641 1065232 :1 1
16657 1048848 :3 3
16657 1048849 :3 1
16657 1064961 :3 1
16657 1065232 :3 1
1048848 1064961 :3 1
1048849 1064961 :1 1
1048849 1065232 :1 1
1064961 1065232 :1 1
Result: 65 (found in 36 comparisons)