Pagini recente » Cod sursa (job #344022) | Cod sursa (job #1905132) | Cod sursa (job #76709) | Cod sursa (job #416925) | Cod sursa (job #2461963)
#include <iostream>
#include <fstream>
#include <stack>
using namespace std;
ifstream fin("subsir.in");
ofstream fout("subsir.out");
const int amic = 666013;
int n, m;
int ny[1041], my[1041];
int big_brain[1041][1041], emag[1041][1041];
void aliexpress()
{
cout << " ";
for(int x = 1; x <= m; x++){
cout << my[x] << " ";
}
cout << "\n";
for(int x = 1; x <= n; x++){
cout << ny[x] << " ";
for(int y = 1; y <= m; y++){
cout << big_brain[x][y] << " ";
}
cout << "\n";
}
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; i++){
fin >> ny[i];
}
for(int i = 1; i <= m; i++){
fin >> my[i];
}
for(int x = 1; x <= n; x++){
for(int y = 1; y <= m; y++){
int d;
if(ny[x] == my[y]){
d = big_brain[x-1][y-1]+1;
}else{
d = max(big_brain[x-1][y], big_brain[x][y-1]);
}
big_brain[x][y] = d;
int z = +(big_brain[x-1][y]==big_brain[x][y])*emag[x-1][y]
+(big_brain[x][y-1]==big_brain[x][y])*emag[x][y-1]
-(big_brain[x-1][y-1]==big_brain[x][y])*emag[x-1][y-1];
if(ny[x] == my[y]){
z++;
}
emag[x][y] = z;
}
}
fout << emag[n][m];
return 0;
}