Pagini recente » Cod sursa (job #541287) | Cod sursa (job #1075575) | Cod sursa (job #1831233) | Cod sursa (job #1820723) | Cod sursa (job #2577804)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("cmlsc.in");
ofstream out("cmlsc.out");
const int MAX = 1025;
int n, m, a[MAX], b[MAX], d[MAX][MAX];
vector <int> sir;
void read() {
for(int i = 1; i <= n; i++)
in >> a[i];
for(int i = 1; i <= m; i++)
in >> b[i];
}
void solve() {
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
if(a[i] == b[j])
d[i][j] = d[i - 1][j - 1] + 1;
else
d[i][j] = max(d[i - 1][j], d[i][j - 1]);
}
}
}
int main() {
in >> n >> m;
read();
solve();
out << d[n][m] << "\n";
while(n > 0 && m > 0) {
if(a[n] == b[m]) {
sir.push_back(a[n]);
n--;
m--;
} else if(d[n - 1][m] < d[n][m - 1])
m--;
else
n--;
}
for(int i = (int)sir.size() - 1; i >= 0; i--)
out << sir[i] << " ";
return 0;
}