现在是 90.
改为了
```cpp
for (int i = 1; i <= n; i++) {
if (a[i] > eps) {
if (c == -1 || a[i] > a[c]) c = i;
}
}
```
by TernaryTree @ 2023-12-12 22:38:11
重构代码之后过了
```cpp
#include <bits/stdc++.h>
#define int long long
using namespace std;
typedef double db;
const int maxn = 1e3 + 10;
const int maxm = 1e4 + 10;
const db eps = 1e-6;
const db inf = 1e9;
struct Simplex {
int n, m;
db f[maxn][maxm];
void init(int _n, int _m) {
n = _n;
m = _m;
}
void pivot(int r, int c) {
// 将第 r 个基变量换进,把第 c 个非基变量换出
db k = -f[r][c];
f[r][c] = -1;
for (int i = 0; i <= n; i++) f[r][i] /= k;
for (int j = 0; j <= m; j++) {
if (j == r || fabs(f[j][c]) < eps) continue;
k = f[j][c];
f[j][c] = 0;
for (int p = 0; p <= n; p++) f[j][p] += f[r][p] * k;
}
}
bool simplex() {
int c = -1, r = -1;
for (int i = 1; i <= n; i++) {
if (f[0][i] > eps && (c == -1 || f[0][i] > f[0][c])) c = i;
}
if (c == -1) return 1;
for (int j = 1; j <= m; j++) {
if (f[j][c] < -eps) {
if (r == -1) r = j;
else if (f[j][0] / (-f[j][c]) < f[r][0] / (-f[r][c])) r = j;
}
}
pivot(r, c);
return simplex();
}
};
int n, m;
Simplex S;
signed main() {
cin >> n >> m;
S.init(m, n);
for (int i = 1; i <= n; i++) cin >> S.f[i][0];
for (int i = 1; i <= m; i++) {
int l, r;
cin >> l >> r >> S.f[0][i];
for (int j = l; j <= r; j++) S.f[j][i] = -1;
}
S.simplex();
cout << (int) S.f[0][0] << endl;
return 0;
}
```
by TernaryTree @ 2023-12-13 20:23:23