intさわだんのBlack History

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

AOJ0579 暑い日々

joi-yosen

~DP~

#include <cstdio>
#include <algorithm>

using namespace std;

int main(){

  int d,n;

  int kion[203] = {0};
  int huku[203][3] = {0};

  int dp[203][203] = {0};

  scanf("%d%d",&d,&n);

  for(int i = 0;i < d;i++){
    scanf("%d",&kion[i]);
  }

  for(int i = 0;i < n;i++){
    scanf("%d%d%d",&huku[i][0],&huku[i][1],&huku[i][2]);
  }


  for(int i = 2;i <= d;i++){
    for(int j = 0;j < n;j++){
      if(kion[i-1] <= huku[j][1] && kion[i-1] >= huku[j][0]){
	for(int k = 0;k < n;k++){
	  if(kion[i-2] <= huku[k][1] && kion[i-2] >= huku[k][0]){
	  dp[i][j] = max(dp[i][j],abs(huku[k][2] - huku[j][2])+dp[i-1][k]);
	  }
	}
      }
    }
  }
  int ans = 0;

  for(int i = 0;i < n;i++){
    ans = max(ans,dp[d][i]);
  }

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

  return 0;

}