Gargari got bored to play with the bishops and now, after solving the problem about them, he is trying to do math homework. In a math book he have found k permutations. Each of them consists of numbers 1, 2, ..., n in some order. Now he should find the length of the longest common subsequence of these permutations. Can you help Gargari?
You can read about longest common subsequence there:https://en.wikipedia.org/wiki/Longest_common_subsequence_problem
The first line contains two integers n and k (1 ≤ n ≤ 1000; 2 ≤ k ≤ 5). Each of the next k lines contains integers 1, 2, ..., n in some order — description of the current permutation.
Print the length of the longest common subsequence.
4 3 1 4 2 3 4 1 2 3 1 2 4 3
3
The answer for the first test sample is subsequence [1, 2, 3].
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n,i,j,k,t,s;
int a[6][2005]={};
int p[6][2005]={};
while(cin>>n>>k){
int dp[2005]={};
for(i=1;i<=k;i++){
for(j=1;j<=n;j++){
cin>>a[i][j];
p[i][a[i][j]]=j;
}
}
for(i=1;i<=n;i++){
dp[i]=1;
for(j=1;j<i;j++){
for(s=2;s<=k;s++){
if(p[s][a[1][j]]>=p[s][a[1][i]]) goto l;
}
dp[i]=max(dp[i],dp[j]+1);
l:;
}
}
int ans=0;
for(i=1;i<=n;i++){
ans=max(ans,dp[i]);
}
cout<<ans<<endl;
}
}