# APCS實作題2020年10月第1題:人力分配
> 日期:2023年9月10日
> 作者:王一哲
> 題目來源:109年10月實作題
> [ZeroJudge 題目連結](https://zerojudge.tw/ShowProblem?problemid=f312)
<br />
## 題目
### 問題描述
有一個公司有 $n$ 個員工,還有兩個工廠。如果工廠一與工廠二分別有 $X_1$ 與 $X_2$ 個員工,兩個工廠的收益 $Y_1$、$Y_2$ 分別會是
$$
Y_1 = A_1 X_1^2 + B_1 X_1 + C_1 \\
Y_2 = A_2 X_2^2 + B_2 X_2 + C_2
$$
請你考慮所有分配員工的方式,找出收益最大的組合,輸出最大收益。注意,每個員工皆需分配到其中一個工廠。
<br />
### 輸入格式
第一行有三個整數 $A_1, B_1, C_1$,第二行有三個整數 $A_2, B_2, C_2$,第三行有一個正整數 $n$ ($1 \leq n \leq 100$)。
配分
- 50分:$n = 2$
- 50分:$1 \leq n \leq 100$
<br />
### 輸出格式
輸出最大收益
<br />
### 範例:輸入
```
2 -1 3
4 -5 2
2
```
### 範例:正確輸出
```
11
```
<br />
## Python 程式碼
解題時要注意,**可以不分配人力到其中一間工廠,收益有可能是負數**。於 ZeroJudge 測試結果,最長運算時間約為 18 ms,使用記憶體最多約為 3.3 MB,通過測試。
```python=
import sys
A1, B1, C1 = map(int, input().split())
A2, B2, C2 = map(int, input().split())
n = int(input())
ans = -sys.maxsize - 1
for i in range(0, n+1):
Y1 = A1*i*i + B1*i + C1
Y2 = A2*(n-i)*(n-i) + B2*(n-i) + C2
ans = max(ans, Y1+Y2)
print(ans)
```
<br /><br />
## C++ 程式碼
於 ZeroJudge 測試結果,最長運算時間約為 6 ms,使用記憶體最多約為 340 kB,通過測試。
```cpp=
#include <iostream>
#include <limits.h>
#include <algorithm>
using namespace std;
int main() {
long A1, B1, C1, A2, B2, C2, n;
cin >> A1 >> B1 >> C1;
cin >> A2 >> B2 >> C2;
cin >> n;
long ans = INT_MIN;
for(long i=0; i<=n; i++) {
long Y1 = A1*i*i + B1*i + C1;
long Y2 = A2*(n-i)*(n-i) + B2*(n-i) + C2;
ans = max(ans, Y1+Y2);
}
cout << ans << endl;
return 0;
}
```
<br /><br />
---
###### tags:`APCS`、`Python`、`C++`