#include <bits/stdc++.h>
using namespace std;
int n, m, p[1005], s[1005], ta, tb, tc, td, A, H, E, R;
struct Node {
int pr, sr, sc;
} a[100005];
int read() {
int x = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-') {
f = -1;
}
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
x = x * 10 + ch - '0', ch = getchar();
}
return x * f;
}
struct Node1 {
int c; // 该同学评测次数。
map<int /*题目编号*/, vector<int> /*储存该题目评测记录*/> mp;
};
map<int, Node1> st;
int pt, lg;
int main() {
n = read();
m = read();
for (int i = 1; i <= n; i++) {
p[i] = read();
}
for (int i = 1; i <= m; i++) {
s[i] = read();
}
ta = read();
tb = read();
tc = read();
td = read();
A = read();
H = read();
E = read();
R = read();
for (int i = 1; i <= R; i++) {
a[i].pr = read();
a[i].sr = read();
a[i].sc = read();
st[a[i].sr].c++;
// st[a[i].sr]->s
st[a[i].sr].mp[a[i].pr].push_back(a[i].sc);
}
pt = pt + n * ta;
for (int i = 1; i <= m; i++) {
pt = pt + min(st[s[i]].c * tb, ta + tc * st[s[i]].c);
int sum = 0;
for (auto j = st[s[i]].mp.begin(); j != st[s[i]].mp.end(); j++) {
int maxx = 0;
for (int k = 0; k < j->second.size(); k++) {
if (j->second[k] > maxx) {
maxx = j->second[k];
sum++;
}
}
}
cout << sum << "\n";
pt = pt + (sum * td);
}
lg = (R * tc + n * ta) * 100 / A + H;
printf("%d\n%d\n", pt, lg);
if (lg <= pt) {
puts("Use Luogu!");
} else {
puts("Forget it...");
}
return 0;
}
这一组数据 WA 了。
输入:
2 3
4 2
2 5 4
54 47 14 13 94 124 0
10
4 4 90
4 2 50
2 4 90
4 4 90
2 5 40
4 5 60
4 2 30
2 2 80
4 2 20
2 2 20
输出:
509
387
Use Luogu!
但是程序却输出:
488
387
Use Luogu!
求调,给关注。
(((