🦁
AGC 040 | A - ><
問題
考えたこと
(ほとんど解説動画と同じなのでそっちを見たほうがよい)
入力例2で考える。
次に
それで総和が一番小さい数列ができた。
コード
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
using ll = long long;
using ld = long double;
using uint = unsigned int;
using ull = unsigned long long;
const int MOD = 1e9 + 7;
int main() {
string s;
cin >> s;
const int n = s.size() + 1;
vector<ll> a(n);
ll m = 0; // minimum
// check <
for (int i = 0; i < n - 1; i++) {
char c = s[i];
if (c == '<') {
a[i + 1] = a[i] + 1;
}
}
// check >
for (int i = n - 2; i >= 0; i--) {
char c = s[i];
if (c == '>') {
a[i] = max(a[i], a[i + 1] + 1);
}
}
ll ans = 0;
for (int i = 0; i < n; i++) {
ans += a[i];
}
cout << ans << endl;
}
Discussion