#include "../tcframe/runner.hpp"

using namespace tcframe;

class Problem : public BaseProblem {
protected:
    string first, second, lcs;
    int ans;
    void Config() {
        setSlug("weekend1");
        setTimeLimit(1);
        setMemoryLimit(128);
    }

    void InputFormat() {
        LINE(first);
        LINE(second);
    }

    void OutputFormat() {
        LINE(ans);
        LINE(lcs);
    }

    void Constraints() {
    }
};

class Generator : public BaseGenerator<Problem> {
protected:
    void Config() {
        setTestCasesDir("WEEKEND1");
        setSolutionCommand("./weekend1_lcs");
    }

    void SampleTestCases() {
        SAMPLE_CASE({
            "abc"
            ,"abcd"
        });
  
    }

    void TestCases() {
        CASE(first="abc", second="def");
        CASE(randomString(10));
        CASE(randomString(100));
        CASE(randomString(1000));
        CASE(randomString(10000));
        
    }
    
private:
    void randomString(int n) {
        first = "";
        second = "";
        char f, s;
        //97~122
        for (int i = 0; i < n; i++) {
            f =rnd.nextInt(97, 122);
            s =rnd.nextInt(97, 122);
            first.push_back(f);
            second.push_back(s);
            
            
        }
    }
};

int main(int argc, char* argv[]) {
    Runner<Problem> runner(argc, argv);

    runner.setGenerator(new Generator());
    return runner.run();
}
