問題
https://codeforces.com/gym/103150/problem/A (新しいタブで開く)
問題文
長さ の数列が与えられる。その数列に対して、以下の操作を 回行う。
各要素を、ほかのすべての要素の合計で置き換える。具体的には、次のすべてが 同時に 起きる。
それぞれの について、 を で置き換える。
最終的な数列の 差の最大値 を求める。
制約
- テストケース数:
- の総和は を超えない
サンプル
3 4 1 1 3 5 4 1 1000 2020 10 100000 1 1 1 1 1 1 1 1 1 1
4 0 0
考察
1 回操作を行うと、 として、 になる。
このとき、最大の差は になる。
これを何回やっても変わらないので、結局答えは最初の数列の差の最大値。
コード
https://codeforces.com/gym/103150/submission/120702811 (新しいタブで開く)
void solve() { int n, k; cin >> n >> k; vector<int> a(n); rep(i, n) cin >> a[i]; int maxim = *max_element(a.begin(), a.end()); int minim = *min_element(a.begin(), a.end()); cout << maxim - minim << endl; return; }