#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <cstring>
#include <set>
#include <cmath>
#include <map>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int MN = 65005;
const int MAXN = 1000005;
const int INF = 0x3f3f3f3f;
#define IOS ios::sync_with_stdio(false)
int n, m;
ll path[MAXN];
int main() {
scanf("%d %d", &n, &m);
int t1, t2;
ll sum = 0;
scanf("%d", &t1);
for (int i = 1; i <= m - 1; i++) {
scanf("%d", &t2);
if (t1 < t2) {
path[t1]++;
path[t2]--;
} else {
path[t2]++;
path[t1]--;
}
t1 = t2;
}
int a, b, c;
for (int i = 1; i <= n - 1; i++) {
scanf("%d %d %d", &a, &b, &c);
path[i] += path[i - 1];
//printf("%d ", path[i]);
if(path[i]){
sum+=min(path[i]*a,path[i]*b+c);
}
}
if (m <=1) {
printf("0");
return 0;
}
printf("%lld", sum);
return 0;
}
P3406 海底高铁(差分)
最新推荐文章于 2024-09-12 19:02:20 发布