func_code_string: #include <bits/stdc++.h>   using namespace std;   int n;   map<string, int> mid, pid;   std::vector<string> hostname;   vector<int> a[100000];   char s[1000];   int m_total = 0, p_total = 0;   int b[100000];   std::vector<std::vector<int> > ans;   bool cmp(int i, int j) { return a[i] < a[j]; }   int main(int argc, char const *argv[]) {     scanf( %d , &n);     for (int i = 0; i < n; ++i) {       scanf( %s , s);       int j = 7;       for (; s[j]; ++j)         if (s[j] ==  / ) break;       string host =   , path =   ;       for (int k = 0; k < j; ++k) host += s[k];       for (int k = j; s[k]; ++k) path += s[k];       if (mid.count(host) == 0) {         mid[host] = m_total++;         hostname.push_back(host);       }       if (pid.count(path) == 0) {         pid[path] = p_total++;       }       a[mid[host]].push_back(pid[path]);     }     for (int i = 0; i < m_total; ++i) {       sort(a[i].begin(), a[i].end());       a[i].erase(unique(a[i].begin(), a[i].end()), a[i].end());       b[i] = i;     }     sort(b, b + m_total, cmp);     int l = 0;     for (int i = 1; i < m_total; ++i) {       if (a[b[i]] != a[b[l]]) {         if (i - l > 1) {           std::vector<int> v;           v.clear();           for (int j = l; j < i; ++j) v.push_back(b[j]);           ans.push_back(v);         }         l = i;       }     }     if (m_total - l > 1) {       std::vector<int> v;       v.clear();       for (int j = l; j < m_total; ++j) v.push_back(b[j]);       ans.push_back(v);     }     printf( %d n , ans.size());     for (int i = 0; i < ans.size(); ++i) {       for (int j = 0; j < ans[i].size(); ++j) {         printf( %s%c , hostname[ans[i][j]].c_str(),                j < ans[i].size() - 1 ?     :   n );       }     }     return 0;   }   