#include "hieroglyphs.h"
#include <bits/stdc++.h>
using namespace std;
void chmax(int& x, int y){
x=max(x,y);
}
std::vector<int> ucs(std::vector<int> A, std::vector<int> B) {
int n = A.size(), m = B.size();
vector<vector<int>> dp(n+1,vector<int>(m+1));
for(int i=0;i<n;++i){
for(int j=0;j<m;++j){
chmax(dp[i+1][j],dp[i][j]);
chmax(dp[i][j+1],dp[i][j]);
if(A[i]==B[j]){
chmax(dp[i+1][j+1],dp[i][j]+1);
}
}
}
vector<int>res;
int i=n,j=m;
while(i>0&&j>0){
if(A[i-1]==B[j-1]){
res.push_back(A[i-1]);
i--;
j--;
}else if(dp[i-1][j]>=dp[i][j-1])i--;
else j--;
}
reverse(begin(res),end(res));
map<int,int>cnt1,cnt2,cnt3;
for(auto u :A)cnt1[u]++;
for(auto u:B) cnt2[u]++;
for(auto u:res)cnt3[u]++;
for(auto [a, c]:cnt1){
c =min(c,cnt2[a]);
if(c>cnt3[a])return{-1};
}
return res;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |