Untitled

 avatar
unknown
c_cpp
2 years ago
1.8 kB
8
Indexable
#include <iostream>
#include <string>
using namespace std;

bool Find(string* rg, int pos){

    for (int i = 0; i < pos; i++){
        if (rg[i] == rg[pos]){
            return true;
        }
    }
    return false;
}
int main(){

    string buffer = "";
    getline(cin, buffer);
    int n = stoi(buffer);

    string* a = new string[n];
    string* rg = new string[n];

    for (int i = 0; i < n; i++){
        getline(cin, a[i]);
        a[i] = " " + a[i] + " ";

        int j = 0;
        while (j < a[i].length()){
            if (a[i][j] != ' ' && isalpha(a[i][j-1]) && isalpha(a[i][j+1])){
                a[i].erase(j,1);
            }
            else{
                if (j > 0 && a[i][j-1] == ' '){
                    a[i][j] = toupper(a[i][j]);
                }
                if (j < a[i].length() - 1 && a[i][j+1] == ' '){
                    a[i][j] = tolower(a[i][j]);
                }
                j++;
            }
        }
    }

    for (int i = 0; i < n; i++){
        for (int j = 1; j < a[i].length(); j++){
            if (a[i][j-1] == ' '){
                rg[i] += a[i][j];
            }
        }
        int d = 0;

        while (Find(rg, i) == true){
            int dtmp = 0;
            for (int j = a[i].length()-2; j >= 0; j--){
                if (a[i][j+1] == ' '){
                    if (d == dtmp){
                        string tmp1 = rg[i].substr(0,rg[i].length()-d*2);
                        string tmp2 = rg[i].substr(rg[i].length()-d*2, d*2);
                        rg[i] = tmp1 + a[i][j] + tmp2;
                        d++;
                        break;
                    }
                    else{
                        dtmp++;
                    }
                }
            }
        }
        cout << rg[i] << '\n';
    }

    delete[] a;
    delete[] rg;

    return 0;
}