FOOLFORM Editorial

Problem Link:

Fool’s Programming Contest
Foolish formation

Author: Amul Agarwal
Testers: Ishaan Shah, Sanyam Shah, Sambasai Andem and Tejas Chaudhari
Editorialist: Keyur Chaudhari

DIFFICULTY:

SIMPLE/MEDIUM

EXPLANATION:

The problem statement had a link to the same page as the problem. This hint was supposed to indicate recursion. This problem was based on the concept of " Recursive acronym".
A Recursive acronym is an acronym that refers to itself.

Examples:
PIP — PIP Installs Packages
GNU— GNU’s Not Unix

In this problem, we had to check if the sequence of strings given forms a pattern similar to a recursive acronym. The solution was to print “YES” if the string formed by the first characters of all given strings was also present in the list of strings given, and “NO” otherwise.

Another hint given in the problem: The problem code was “FOOLFORM” which could have hinted at “FULL FORM”

Sample Explanation

Sample Input:

1
5
eve visited every royal yacht

Sample Output:

YES

Explanation:

String formed from first characters = “every”
Since “every” is present in the input, the answer is “YES”


Tester's Solution
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
#define fast                      \
    ios_base::sync_with_stdio(0); \
    cin.tie(0);                   \
    cout.tie(0)
#define tc    \
    int t;    \
    cin >> t; \
    while (t--)

signed main()
{
    fast;
    tc
    {
        int n;
        cin >> n;
        string a[n];
        string trgt;
        for (int i = 0; i < n; i++) {
            cin >> a[i];
            trgt.pb(a[i][0]);
        }
        int f = 0;
        for (int i = 0; i < n; i++) {
            if (a[i] == trgt) {
                f = 1;
                break;
            }
        }
        if (f) {
            cout << "YES" << endl;
        }
        else {
            cout << "NO" << endl;
        }
    }
}


Editorialist's Solution
#include <bits/stdc++.h>

#include <iostream>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        vector<string> v(n);
        string req = "";
        for (int i = 0; i < n; i++) {
            cin >> v[i];
            req += v[i][0];
        }
        bool okay = false;
        for (auto s1 : v) {
            if (s1.size() != req.size()) continue;
            if (req == s1) {
                okay = true;
                break;
            }
        }
        if (okay)
            cout << "YES" << endl;
        else
            cout << "NO" << endl;
    }
    return 0;
}