feat: updated LCS problem

This commit is contained in:
2025-12-09 21:26:27 -03:00
parent e75daedef5
commit 0951a11635
110 changed files with 201 additions and 30 deletions

View File

@@ -3,15 +3,48 @@
using namespace std;
bool isSubsequence(string &original, string &sub) {
int j = 0;
for (int i = 0; i < original.size() && j < sub.size(); i++) {
if (original[i] == sub[j]) j++;
}
return j == sub.size();
}
int readAns(InStream &stream, string &s1, string &s2) {
int ans = stream.readInt(0, min(s1.size(), s2.size()), "Common subsequence length");
stream.readEoln();
string subsequence;
if (ans == 0) {
stream.readEoln();
subsequence = "";
} else {
subsequence = stream.readToken("[a-z]+");
stream.readEoln();
}
stream.readEof();
quitif(subsequence.size() != ans, _wa, "sequence has length different from informed");
quitif(!isSubsequence(s1, subsequence), _wa, "%s is not a subsequence of %s", subsequence, s1);
quitif(!isSubsequence(s2, subsequence), _wa, "%s is not a subsequence of %s", subsequence, s2);
return ans;
}
int main(int argc, char* argv[]) {
setName("compare two signed int%d's", 8 * int(sizeof(int)));
setName("compare two signed int%d's and check if subsequence given is valid", 8 * int(sizeof(int)));
registerTestlibCmd(argc, argv);
int ja = ans.readInt();
int pa = ouf.readInt();
int n = inf.readInt(), m = inf.readInt();
string s1 = inf.readToken(), s2 = inf.readToken();
if (ja != pa)
quitf(_wa, "expected %d, found %d", ja, pa);
int ja = readAns(ans, s1, s2);
int pa = readAns(ouf, s1, s2);
quitf(_ok, "all answers are correct");
if (ja > pa)
quitf(_wa, "jury has the better answer: jans = %d, pans = %d\n", ja, pa);
else if (ja < pa)
quitf(_fail, "participant has the better answer: jans = %d, pans = %d\n", ja, pa);
quitf(_ok, "answer is correct");
}