Cod sursa(job #401962)

Utilizator jamescrea23Perian Gheorghe-Bogdan jamescrea23 Data 23 februarie 2010 11:19:22
Problema Cel mai lung subsir comun Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <vector>
#include <fstream>
#include <algorithm>
#include <cstdio>
#define MAX(a,b,c) max(a,max(b,c))
#define m(i,j) mat[i][j]
#define for(i,a,b) for(i=a;i<b;i++)

using namespace std;
int mat[107][107];
int main()
{
	ifstream f("cub.in");
	ofstream g("cub.out");
	vector<int> sir;
	int i,j,m,n;
	memset(mat,0,sizeof(mat));
	f >> n;
	f >> m;
	for(i,2,n+2)
		f >> m(i,0);
    for(i,2,m+2)
		f >> m(0,i);
    for(i,2,n+2)
        for(j,2,m+2)
        {
           m(i,j)+= MAX(m(i,j-1),m(i-1,j-1),m(i-1,j));
		   if(m(i,0)==m(0,j)){ m(i,j)++;break;}
		   
		   
		}			
	
for(i,0,n+2)
{
		for(j,0,m+2)
            g << m(i,j) << " "; 
    g << "\n";		
}			
  int maxim = 1;
	for(i,2,n+2)
		for(j,2,m+2)
			if(m(i,j)== maxim&&
			   m(i,j)>m(i-1,j)&&
			   m(i,j)>m(i-1,j-1)&&
               m(i,j)>m(i,j-1)
               ){
              sir.push_back(m(i,0));maxim++;break;
			   }
     int len = sir.size();
	 g << 2*len << "\n";
    g.close();
    return 0;   	
}