配点: 200 点 / 実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 30
問題概要
匹のヘビがおり、 匹目のヘビの太さは 、長さは である。
ヘビの重さを太さと長さの積とするとき、 を満たす各整数 について、すべてのヘビの長さが 伸びたときの最も重いヘビの重さを求めよ。
制約
- 入力はすべて整数。
考察
匹目のヘビの重さは と書くことができるので、各 について を求めればよい。
実装例
#include <bits/stdc++.h> using namespace std; #define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++) #define repe(i, start, end) for (auto i = (start); (i) <= (end); (i)++) template <typename T> inline bool chmax(T &a, T b) { return ((a < b) ? (a = b, true) : (false)); } // ======================================== // int main() { int N, D; cin >> N >> D; vector<int> T(N), L(N); rep(i, 0, N) cin >> T[i] >> L[i]; repe(k, 1, D) { int ans = 0; rep(i, 0, N) chmax(ans, T[i] * (L[i] + k)); cout << ans << endl; } return 0; }
実装時間: 5分
コメント
今回のコンテストからrepe
マクロを導入してみた。通常のrep
マクロの終端を+1
するかしないかだけなのだが、思考の過程をそのままコードに落とし込みやすくなったので良いかもしれない。