Official
C - 期末テストのやり直し / Make-Up Exam Editorial
by
C - 期末テストのやり直し / Make-Up Exam Editorial
by
kyopro_friends
科目 \(i\) の試験をやりなおすことで上乗せすることができる点は \(P_i- A_i\) 点なので、 \(P_i-A_i\) が最大である科目の試験をやりなおすと得点差を最大化することができます。
よって、元の点差 \(\sum A_i - \sum B_i\) に \(\max(P_i-A_i)\) を加えたものが答えとなります。
実装例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
vector<int>p(n),a(n),b(n);
for(int i=0; i<n; i++) cin >> p[i];
for(int i=0; i<n; i++) cin >> a[i];
for(int i=0; i<n; i++) cin >> b[i];
long long s = 0;
for(int i=0; i<n; i++){
s += a[i] - b[i];
}
int d = 0;
for(int i=0; i<n; i++){
d = max(d, p[i] - a[i]);
}
cout << s + d << endl;
}
実装例 (Python)
N = int(input())
P = list(map(int, input().split()))
A = list(map(int, input().split()))
B = list(map(int, input().split()))
s = sum(a - b for a, b in zip(A, B))
d = max(p - a for p, a in zip(P, A))
print(s + d)
posted:
last update:
