cf 463D
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<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<cstdlib> #include<algorithm> using namespace std; int n,k,cnt[1002][1002],a[1002],f[1002]; int main() { int ans=0; scanf("%d%d",&n,&k); for(int i=0;i<k;i++) { for(int j=0;j<n;j++) { scanf("%d",&a[j]); for(int c=0;c<j;c++) cnt[a[c]][a[j]]++; } } for(int i=0;i<n;i++) { f[a[i]]=1; for(int j=0;j<i;j++) { if(cnt[a[j]][a[i]]==k) { f[a[i]]=max(f[a[i]],f[a[j]]+1); } } ans=max(ans,f[a[i]]); } printf("%d\n",ans); return 0; }