Submission #59491355
Source Code Expand
#include <bits/stdc++.h>
#include <atcoder/modint>
namespace {
using ModInt [[maybe_unused]] = atcoder::modint998244353;
using Num [[maybe_unused]] = long long int;
using Vec [[maybe_unused]] = std::vector<Num>;
using Set [[maybe_unused]] = std::set<Num>;
using Mset [[maybe_unused]] = std::multiset<Num>;
using Edges [[maybe_unused]] = std::vector<std::vector<Num>>;
template<typename T>
using Q [[maybe_unused]] = std::queue<T>;
template<typename T>
using PQ [[maybe_unused]] = std::priority_queue<T, std::vector<T>, std::greater<T>>;
const std::vector<std::pair<Num, Num>> dyxs {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
std::map<char, std::pair<Num, Num>> directions {{'D', {1, 0}}, {'U', {-1, 0}}, {'R', {0, 1}}, {'L', {0, -1}}};
template<typename T>
void print_oneline(const std::vector<T>& vec, std::ostream& os) {
const auto size = vec.size();
for(size_t i{0}; i<size; ++i) {
os << vec.at(i) << (((i+1) == size) ? '\n' : ' ');
}
}
template<typename T>
void print_each(const std::vector<T>& vec, std::ostream& os) {
const auto size = vec.size();
for(size_t i{0}; i<size; ++i) {
os << vec.at(i) << '\n';
}
}
}
void solve(std::istream& is, std::ostream& os) {
std::string s;
is >> s;
const Num n = s.size();
if (n == 1) {
os << "1\n";
return;
}
if (n == 2) {
if (s.at(0) == s.at(1)) {
os << "2\n";
} else {
os << "1\n";
}
return;
}
char prev {'^'};
Num len {0};
Vec ls;
s += '$';
for(Num i{0}; i<=n; ++i) {
const auto c = s.at(i);
if (c == prev) {
++len;
} else {
if (len > 0) {
ls.push_back(len);
}
len = 1;
}
prev = c;
}
if (ls.size() < 3) {
os << *std::ranges::max_element(ls) << "\n";
return;
}
Num ans {0};
Num fwd {0};
Num rev {0};
const auto center = n / 2;
const auto sz = ls.size();
for(size_t i{0}; (i+1)<sz; ++i) {
fwd += ls.at(i);
rev += ls.at(sz-1-i);
if (fwd <= center) {
ans = std::max(ans, fwd);
}
if (rev <= center) {
ans = std::max(ans, rev);
}
}
os << n - ans << "\n";
}
int main(void) {
solve(std::cin, std::cout);
return 0;
}
Submission Info
| Submission Time |
|
| Task |
D - Wide Flip |
| User |
zettsut |
| Language |
C++ 20 (gcc 12.2) |
| Score |
500 |
| Code Size |
2570 Byte |
| Status |
AC |
| Exec Time |
4 ms |
| Memory |
4060 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
500 / 500 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
s1.txt, s2.txt, s3.txt |
| All |
01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, s1.txt, s2.txt, s3.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 01.txt |
AC |
3 ms |
4056 KiB |
| 02.txt |
AC |
3 ms |
3988 KiB |
| 03.txt |
AC |
4 ms |
3924 KiB |
| 04.txt |
AC |
3 ms |
3928 KiB |
| 05.txt |
AC |
3 ms |
3948 KiB |
| 06.txt |
AC |
3 ms |
3764 KiB |
| 07.txt |
AC |
3 ms |
3800 KiB |
| 08.txt |
AC |
3 ms |
3672 KiB |
| 09.txt |
AC |
3 ms |
4028 KiB |
| 10.txt |
AC |
3 ms |
3988 KiB |
| 11.txt |
AC |
3 ms |
3972 KiB |
| 12.txt |
AC |
3 ms |
3716 KiB |
| 13.txt |
AC |
3 ms |
3952 KiB |
| 14.txt |
AC |
3 ms |
3924 KiB |
| 15.txt |
AC |
3 ms |
3988 KiB |
| 16.txt |
AC |
3 ms |
4060 KiB |
| 17.txt |
AC |
3 ms |
3612 KiB |
| 18.txt |
AC |
2 ms |
3676 KiB |
| 19.txt |
AC |
2 ms |
3664 KiB |
| 20.txt |
AC |
3 ms |
3604 KiB |
| 21.txt |
AC |
1 ms |
3672 KiB |
| 22.txt |
AC |
1 ms |
3480 KiB |
| 23.txt |
AC |
1 ms |
3552 KiB |
| 24.txt |
AC |
1 ms |
3480 KiB |
| 25.txt |
AC |
1 ms |
3548 KiB |
| 26.txt |
AC |
1 ms |
3496 KiB |
| 27.txt |
AC |
1 ms |
3480 KiB |
| s1.txt |
AC |
1 ms |
3532 KiB |
| s2.txt |
AC |
1 ms |
3496 KiB |
| s3.txt |
AC |
1 ms |
3480 KiB |