Thursday, August 24, 2023

Generating Subsequences

 #include <iostream>

#include <vector>

#include <bits/stdc++.h>


using namespace std;

void print(vector<vector<int>> subsequences)

{   int j = 0;

    for (vector<int> subsequence : subsequences) {

        cout << " subsequence_index " << j++ << endl;

        for (int i : subsequence) {

            cout << i << " ";

        }

        cout << endl;

    }

}


void generate_subsequences(vector<int> sequence, vector<int> b) {

    /*

     * Generates all subsequences of the given sequence.

     *

     * Args:

     *   sequence: The sequence to generate subsequences from.

     *

     * Returns:

     *   A vector of all subsequences of the given sequence.

     */


    int n = sequence.size();

    vector<vector<int>> subsequences;

    subsequences.push_back({});


    for (int i = 0; i < n; i++) {

        int current_size = subsequences.size();

        for (int j = 0; j < current_size; j++) {

            vector<int> new_subsequence = subsequences[j];

            new_subsequence.push_back(sequence[i]);

            subsequences.push_back(new_subsequence);

        }


    }


    //check

    for (vector<int> i : subsequences)

    {

        //compare

        if (i == b)

        {

            cout << "YES" << endl;

            return;

        }

    }


    cout << "NO" << endl;

    return;


    //return subsequences;

}



void solve() {

    int n, m;


    cin >> n >> m;


    vector<int> a(n);

    vector<int> b(m);


    for (int i = 0; i < n; i++)

    {

        cin >> a[i];

    }

    for (int i = 0; i < m; i++)

    {

        cin >> b[i];

    }


    //int size = pow(2, n);

    //vector<vector<int>> c(size);

    //generate_subsequences(a, b);


    int counter = 0;

    int bCounter = 0;

    for (int i = 0; i < n; i++)

    {

        if (counter == m)

        {

            cout << "YES" << endl;

            return;

        }

        if (a[i] == b[bCounter])

        {

            counter++;

            bCounter++;

        }

    }


    if (counter == m)

    {

        cout << "YES" << endl;

        return;

    }

    else {

        cout << "NO" << endl;

        return;

    }



}



int main() {

    //int tc;


    //cin >> tc;


    //while (tc--)

    //{

    solve();

    //}


    return 0;

}


No comments:

Post a Comment