intさわだんのBlack History

刹那的レジェンドになりたい。

JOI本選過去問 第11回 日本情報オリンピック本選 2問目 たのしいカードゲーム

どう見ても解法わるい

#include <cstdio>
#include <algorithm>

using namespace std;

int alen = 0,blen = 0;

short ans = 0;

short a[5003] = {0};

short b[5003] = {0};

short dp[5003][5003] = {0};


int main(){


  scanf("%d %d ",&alen,&blen);

  for(int i = 0;i < alen;i++){
    scanf("%hd",&a[i]);
  }
  for(int i = 0;i < blen;i++){
    scanf("%hd",&b[i]);
  }


  for(int j =0;j < blen;j++){
    for(int i = 0;i < alen;i++){
 
      if(a[i] == b[j]){
	int nau = i - 1;
short	int mmm = 0;
	while(nau>=0){
	  if(j-1 < 0) break;
	  mmm = max(mmm,dp[nau][j-1]);
	  nau--;
	}
	dp[i][j] = mmm + 1;
	ans = max(ans,dp[i][j]);



      }
    }
  }

  printf("%d\n",ans);

}