はじめに
たなしょです。
おしかったです。後ろから比べていく考え方自体は近かったんですけどね。
問題文
https://atcoder.jp/contests/abc139/tasks/abc139_c
考え方
reverseで配列の中身を逆順にします。
revese(rdata.begin(), data.end());
配列0番目から比較していきdata[i-1] <= data[i]ならvalを+1する。
data[i-1] <= data[i]を満たせないならvalをリセットする。
max関数でansとvalを比較して大きい方をmaxに代入する。
for (int i = 1; i < N; i++) { if (data[i-1] <= data[i]) val++; else val = 0; ans = max(ans, val); }
いざ実装
#include <iostream> #include <vector> #include <utility> #include <algorithm> #include <cmath> typedef long long ll; using namespace std; int main() { int N; int ans = 0; int val = 0; cin >> N; vector<int> data(N); for (int i = 0; i < N; i++) { cin >> data.at(i); } revese(rdata.begin(), data.end()); for (int i = 1; i < N; i++) { if (data[i-1] <= data[i]) val++; else val = 0; ans = max(ans, val); } cout << ans << endl; return 0; }
最後に
おしかったなぁ。
最後まで読んでいただいてありがとうございました。 もしよろしければtwitterアカウント(@piklus100yen)もフォローしていただけると幸いです!