提出 #70625592
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
// // Optional: Policy-based DS (comment to disable)
// #include <ext/pb_ds/assoc_container.hpp>
// using namespace __gnu_pbds;
// template<typename T>
// using indexed_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
// // Optional: File I/O
// ifstream input_file("input.txt");
// ofstream output_file("output.txt");
// #define cin input_file
// #define cout output_file
// -------------------- Type Aliases --------------------
using ll = long long;
using ld = long double;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using vi = vector<int>;
using vvi = vector<vi>;
using vll = vector<ll>;
// -------------------- Macros --------------------
#define all(x) begin(x), end(x)
#define rall(x) rbegin(x), rend(x)
#define pb push_back
#define eb emplace_back
#define ff first
#define ss second
#define endl '\n'
#define SUM(v) accumulate(all(v), 0LL)
#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
// -------------------- Constants --------------------
constexpr ll INF = 1e18;
constexpr ll MOD = 1e9 + 7;
constexpr int MAXN = 2e5 + 5;
// -------------------- Overloads --------------------
template<typename T>
ostream& operator<<(ostream& os, const vector<T>& v) {
for (const auto& x : v) os << x << ' ';
return os;
}
template<typename T>
istream& operator>>(istream& is, vector<T>& v) {
for (auto& x : v) is >> x;
return is;
}
template<typename T, typename U>
ostream& operator<<(ostream& os, const pair<T, U>& p) {
return os << '(' << p.ff << ", " << p.ss << ')';
}
template<typename T>
ostream& operator<<(ostream& os, const set<T>& s) {
for (auto& x : s) os << x << ' ';
return os;
}
template<typename K, typename V>
ostream& operator<<(ostream& os, const map<K, V>& m) {
for (auto& [k, v] : m) os << '{' << k << ": " << v << "} ";
return os;
}
template<typename T>
ostream& operator<<(ostream& os, const vector<vector<T>>& v) {
for (const auto& row : v) {
for (const auto& val : row) os << val << ' ';
os << '\n';
}
return os;
}
template<typename T>
istream& operator>>(istream& is, vector<vector<T>>& v) {
for (auto& row : v)
for (auto& val : row)
is >> val;
return is;
}
// -------------------- Debug (Optional) --------------------
/*
#define dbg(x) cerr << #x << " = " << x << endl;
*/
// -------------------- Math Utilities --------------------
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
ll lcm(ll a, ll b) { return a / gcd(a, b) * b; }
ll mod_add(ll a, ll b, ll m = MOD) { return (a + b) % m; }
ll mod_sub(ll a, ll b, ll m = MOD) { return (a - b + m) % m; }
ll mod_mul(ll a, ll b, ll m = MOD) { return (a * b) % m; }
ll mod_pow(ll base, ll exp, ll m = MOD) {
ll res = 1;
base %= m;
while (exp > 0) {
if (exp & 1) res = mod_mul(res, base, m);
base = mod_mul(base, base, m);
exp >>= 1;
}
return res;
}
ll mod_inv(ll a, ll m = MOD) {
return mod_pow(a, m - 2, m); // Fermat (MOD must be prime)
}
// -------------------- Grid Directions --------------------
const int dx[4] = {0, 1, 0, -1};
const int dy[4] = {1, 0, -1, 0};
// or use: {{0,1},{1,0},{0,-1},{-1,0}} for 2D
// -------------------- Comparators --------------------
auto desc = [](auto a, auto b) { return a > b; };
// -------------------- Solver --------------------
void solve() {
ll n,a,b; cin>>n>>a>>b;
string s; cin>>s;
ll ans = 0;
vll prefA(n + 1, 0), prefB(n + 1, 0);
for (int i = 0; i < n; i++) {
prefA[i + 1] = prefA[i] + (s[i] == 'a');
prefB[i + 1] = prefB[i] + (s[i] == 'b');
}
ll rA = 0, rB = 0;
for(ll i=0; i<n; ++i) {
while(rA <= n && prefA[rA] - prefA[i] < a) rA++;
while (rB <= n && prefB[rB] - prefB[i] < b) rB++;
if (rA <= n && rA < rB) ans += (rB - rA);
}
cout<<ans<<endl;
}
// -------------------- Main --------------------
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
// cin >> t;
for (int tc = 1; tc <= t; ++tc) {
// cout << "Case #" << tc << ": ";
solve();
}
return 0;
}
提出情報
| 提出日時 |
|
| 問題 |
C - Truck Driver |
| ユーザ |
yalrnr |
| 言語 |
C++23 (GCC 15.2.0) |
| 得点 |
300 |
| コード長 |
4371 Byte |
| 結果 |
AC |
| 実行時間 |
6 ms |
| メモリ |
8456 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
300 / 300 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
sample_01.txt, sample_02.txt |
| All |
hand.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, sample_01.txt, sample_02.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| hand.txt |
AC |
1 ms |
3560 KiB |
| random_01.txt |
AC |
5 ms |
8236 KiB |
| random_02.txt |
AC |
5 ms |
8424 KiB |
| random_03.txt |
AC |
5 ms |
8352 KiB |
| random_04.txt |
AC |
5 ms |
8456 KiB |
| random_05.txt |
AC |
5 ms |
8396 KiB |
| random_06.txt |
AC |
4 ms |
8276 KiB |
| random_07.txt |
AC |
5 ms |
8448 KiB |
| random_08.txt |
AC |
5 ms |
8424 KiB |
| random_09.txt |
AC |
5 ms |
8456 KiB |
| random_10.txt |
AC |
5 ms |
8368 KiB |
| random_11.txt |
AC |
5 ms |
8372 KiB |
| random_12.txt |
AC |
5 ms |
8380 KiB |
| random_13.txt |
AC |
5 ms |
8368 KiB |
| random_14.txt |
AC |
6 ms |
8428 KiB |
| random_15.txt |
AC |
6 ms |
8384 KiB |
| random_16.txt |
AC |
5 ms |
8364 KiB |
| random_17.txt |
AC |
5 ms |
8280 KiB |
| random_18.txt |
AC |
5 ms |
8368 KiB |
| random_19.txt |
AC |
5 ms |
8284 KiB |
| random_20.txt |
AC |
5 ms |
8400 KiB |
| random_21.txt |
AC |
5 ms |
8368 KiB |
| random_22.txt |
AC |
5 ms |
8400 KiB |
| sample_01.txt |
AC |
1 ms |
3636 KiB |
| sample_02.txt |
AC |
1 ms |
3624 KiB |