Advertisement
arfin97

739 - Soundex Indexing

Oct 31st, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.16 KB | None | 0 0
  1.     #include <bits/stdc++.h>
  2.     using namespace std;
  3.     #define d(x)                cout << #x << " = " << (x) << endl;
  4.     #define fr                  freopen("in.txt", "r", stdin);
  5.     #define fw                  freopen("out.txt", "w", stdout);
  6.     #define mem(x)              memset((x), 0, sizeof((x)));
  7.     #define pb                  push_back
  8.     #define LL                  long long
  9.     #define fastIO              ios_base::sync_with_stdio(false)
  10.     #define sf                  scanf
  11.     #define pf                  printf
  12.     #define SQR(x)              ((x)*(x))
  13.     #define sc1(x)              scanf("%d", &x)
  14.     #define scb(x, y)           scanf("%d %d", &x, &y)
  15.     #define sc3(x, y, z)        scanf("%d %d %d", &x, &y, &z)
  16.     #define FOR(i, x, y)        for(int i=int(x); i<int(y); i++)
  17.     #define ROF(i, x, y)        for(int i=int(x-1); i>=int(y); i--)
  18.     #define all(c)              (c.begin(), c.end())
  19.     #define unq(v)              sort(all(v)), (v).erase(unique(all(v)),v.end())
  20.     #define EPSILON    (1.0E-9)
  21.     #define siz 65000
  22.  
  23.     int find_group(char ch){
  24.         // string g1 = "BPFV";
  25.         // string g2 = "CSKGJQXZ";
  26.         // string g3 = "DT";
  27.         // string g4 = "L";
  28.         // string g5 = "MN";
  29.         // string g6 = "R";
  30.  
  31.         vector<string> g;
  32.         g.push_back("BPFV");
  33.         g.push_back("CSKGJQXZ");
  34.         g.push_back("DT");
  35.         g.push_back("L");
  36.         g.push_back("MN");
  37.         g.push_back("R");
  38.  
  39.         for(int i = 0; i < g.size(); i++){
  40.             for(int j = 0; j < g[i].size(); j++){
  41.                 if(ch == g[i][j]){
  42.                     return i+1;
  43.                 }
  44.             }
  45.         }
  46.         return 0;
  47.  
  48.     }
  49.  
  50.     char to_str(int num){
  51.         return '0'+num;
  52.     }
  53.  
  54.     int main(){
  55.     #ifndef ONLINE_JUDGE
  56.             clock_t tStart = clock();  
  57.             freopen("in.txt", "r", stdin);
  58.             freopen("out.txt", "w", stdout);
  59.         #endif
  60.        
  61.         cout << "         ";
  62.         cout.width(25);
  63.         cout << left << "NAME" << "SOUNDEX CODE"  << '\n';
  64.  
  65.         string str;
  66.         while(cin >> str){
  67.             string ans = "";
  68.             ans += str[0];
  69.             // if(str[0] == 'A' or str[0] == 'E' or str[0] == '0' or str[0] == 'O' or str[0] == 'U' or str[0] == 'Y' or str[0] == 'W' or str[0] == 'H'){
  70.             //  ans += '0';
  71.             // }
  72.             // else{
  73.             //  ans += to_str(find_group(str[0]));
  74.             // }
  75.             int n = str.size();
  76.             for(int i = 1; i < n; i++){
  77.                 if(str[i] == 'A' or str[i] == 'E' or str[i] == 'I' or str[i] == 'O' or str[i] == 'U' or str[i] == 'Y' or str[i] == 'W' or str[i] == 'H'){
  78.                     continue;
  79.                 }
  80.                 else{
  81.                     int g1 = find_group(str[i-1]);
  82.                     int g2 = find_group(str[i]);
  83.                     if(g1 == g2){
  84.                         continue;
  85.                     }
  86.                     else{
  87.                         ans += to_str(find_group(str[i]));
  88.                     }
  89.                 }
  90.             }
  91.  
  92.             string ans2 = "";
  93.            
  94.             if(ans.size() >= 4){
  95.                 for(int i = 0; i < 4; i++) ans2 += ans[i];
  96.             }
  97.             else{
  98.                 int i = 0;
  99.                 for(i; i < ans.size(); i++) ans2 += ans[i];
  100.                 for(i; i < 4; i++) ans2 += '0';
  101.             }
  102.             cout << "         ";
  103.             cout.width(25);
  104.             cout << left << str << ans2  << '\n';
  105.         }
  106.         cout.width(32);
  107.         cout << right << "END OF OUTPUT" << '\n';
  108.            
  109.         #ifndef ONLINE_JUDGE
  110.             printf("\n>>Time taken: %.10fs\n", (double) (clock() - tStart) / CLOCKS_PER_SEC);
  111.         #endif
  112.  
  113.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement