Cod sursa(job #2461963)

Utilizator CyborgSquirrelJardan Andrei CyborgSquirrel Data 26 septembrie 2019 16:55:12
Problema Subsir Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#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;
}