Untitled

 avatar
unknown
c_cpp
2 years ago
1.5 kB
4
Indexable
#include<bits/stdc++.h>
using namespace std;
int sz=0;
int check=0;
map<int , int> maper;
void preform(string arrays[],int n,string attemt,int start,string outer[]){
    if(maper[start]==2){
        return;
    }
    if(check==1){
        return;

    }
    if(start==attemt.length()){
        check=1;
        return;
         }
    for(int i = 0;i<n;i++){
            string x = arrays[i];
        if(x.length()>attemt.length()-start){
            continue;
        }
        string newstr = attemt.substr(start,x.length());
        int ns = sz;
        if(x.compare(newstr)==0){
            outer[sz]=newstr;
            sz++;
            preform(arrays,n,attemt,start+x.length(),outer);
        }
        if(check==1){
            return;
        }
       sz=ns;

    }
    if(check==0){
        maper[start]=2;
    }

}

int main()
{
    int t;
    cin>>t;
    string out[t];
    for (int i = 0;i<t;i++){
        string outer[2001];
        int n;
        cin>>n;
        string arrays[n];
        for(int j=0;j<n;j++){
            cin>>arrays[j];
        }
        string attempt;
        cin>>attempt;
        preform(arrays,n,attempt,0,outer);
        if(check==1){
            for(int j = 0;j<sz;j++){
            out[i]+=outer[j]+" ";
              }
            sz=0;
            check=0;
            maper.clear();
        }else{
            out[i]="WRONG PASSWORD";
            sz=0;
            check=0;
            maper.clear();
        }
    }
    for(int i = 0;i<t;i++){
        cout<<out[i]<<'\n';
    }
    return 0;
}
Editor is loading...