#P1278. BOAT

BOAT

描述

你拥有一艘非常漂亮的船,许多人希望在夏季租用它,你决定最大化利润。对于每个客户,你知道他想租船的天数以及一系列选择,每个选择包含金额和截止日期。截止日期是从某个时间起点开始计算的天数,只有当你能在截止日期前完成租船(即租船时间段结束于截止日期或之前),才能获得该选择的金额。

例如,你的朋友Jack想租船20天,其选择如下:

  • 若截止日期为60天,则你需在第0到41天(60天-20天+1)之间将船租给他20天,可获得1000欧元;
  • 若截止日期为70天,可获得800欧元。

若某个客户的选择无法帮助最大化利润,可忽略该客户。已知所有客户及其选择,且必须按客户提交请求的顺序处理租船事宜。

编写程序,计算你能获得的最大利润。

输入

输入来自标准输入。每个数据集格式如下:

  • n - 客户数量(n ≤ 100);
  • 接下来n行,每行一个整数,表示每个客户想租船的天数(最多100天);
  • 所有客户的选择总数;
  • 选择列表,格式为客户编号, 截止日期, 金额,其中client_id为1到n的正整数,deadline ≤ 100。

数据集之间用空行分隔。

输出

对每个数据集,输出一行最大利润。不同数据集的输出之间用空行分隔。

输入数据 1

3  
2  
2  
4  
4  
1 2 14  
3 4 25  
2 4 12  
3 3 10  

输出数据 1

26  

来源

东南欧,2002