#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; class Solution { public: vector > palindromePairs(vector& words); vector > slow(vector& words); }; vector > Solution::palindromePairs(vector& words) { vector > rv; return rv; } vector > Solution::slow(vector& words) { int i, j, k; string w; vector > rv; vector p; bool ok; p.resize(2); for (i = 0; i < words.size(); i++) { for (j = 0; j < words.size(); j++) { if (j != i) { w = words[i] + words[j]; ok = true; for (k = 0; ok && k < w.size()/2; k++) { ok = (w[k] == w[w.size()-k-1]); } if (ok) { p[0] = i; p[1] = j; rv.push_back(p); } } } } return rv; } int main(int argc, char **argv) { Solution s; string w; vector words; vector < vector < int> > rv; int i; struct timeval t1, t2; double d1, d2; while (cin >> w) words.push_back((w == "-") ? "" : w); gettimeofday(&t1, NULL); d1 = t1.tv_usec; d1 /= 1000000.0; d1 += t1.tv_sec; if (argc > 1 && strchr(argv[1], 's') != NULL) { rv = s.slow(words); for (i = 0; i < rv.size(); i++) printf("%d %d\n", rv[i][0], rv[i][1]); printf("\n"); } rv = s.palindromePairs(words); if (argc > 1 && strchr(argv[1], 'p') != NULL) { for (i = 0; i < rv.size(); i++) printf("%d %d\n", rv[i][0], rv[i][1]); } gettimeofday(&t2, NULL); d2 = t2.tv_usec; d2 /= 1000000.0; d2 += t2.tv_sec; if (argc > 1 && strchr(argv[1], 't') != NULL) { printf("Time: %.3lf\n", d2-d1); } return 0; }