C - Grand Garden
提出AC
Submission #8507430 - AtCoder Beginner Contest 116
int main() { cout <<setprecision(10); ll n ; cin >> n ; vector<int> a(n); rep(i,n) cin >> a[i]; int active = 0 ; int ans = 0; rep(i,n){ if(active < a[i]){ ans += a[i] - active; active = a[i]; } else if(active > a[i]){ active = a[i]; } } cout << ans << endl; }
解説AC
・解法
解説を見ると良い
active って変数を用意するんですけど、
これよりもa[i](花の高さ)
が大きいんだったら、a[i] - activeを足すんだけど、
これが active よりもa[i]が高いときか、a[i]よりもactiveが高いときか分からなくなる
active = 0 スタートで 花の高さ2 だけがあるときを考えると楽で、
2 - 0 で2が答えになるから
a[i] - active を足せばいいと分かる
なんだこれ。うまく解法書けない