/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Wrong Answer 1ms 532.0 KiB
#3 Wrong Answer 5ms 584.0 KiB

Code

/*
 *   Copyright (c) 2024 Emon Thakur
 *   All rights reserved.
 */
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
using minheap = priority_queue<long long, vector<long long>, greater<long long>>;
typedef tree<int, null_type, greater_equal<int>, rb_tree_tag, tree_order_statistics_node_update> pbds; // find_by_order, order_of_key

#define ll long long
#define ld long double
#define MOD 1000000007
#define pie 2*(acos(0.0))
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define pb push_back
#define endl '\n'
#define lcm(a,b) (a*b)/(__gcd<ll>(a,b))
#define print(v) for(auto e:v) cout<<e<<" "; cout<<endl;
#define printp(v) for(auto e:v) cout<<e.first<<" "<<e.second<<endl;
#define srt(v) sort(v.begin(),v.end())
#define rsrt(v) sort(v.rbegin(),v.rend())
#define life_is_a_race ios::sync_with_stdio(false); cin.tie(nullptr);

void solve(int tc)
{
    //cout<<"Case "<<tc<<": ";
    ll n,k; cin >> n >> k;
    string s; cin >> s;
    ll a=0,b=0,q=0;
    ll right[n][3],leftA[n];

    for(int i=n-1;i>=0;i--)
    {
        right[i][0] = a;
        right[i][1] = b;
        right[i][2] = q;
        a += (s[i]=='A');
        b += (s[i]=='B');
        q += (s[i]=='?');
    }

    a=0; b=0; q=0;
    for(int i=0;i<n;i++)
    {
        leftA[i] = a;
        if(s[i]=='A') ++a;
        else if(s[i]=='B') ++b;
        else if(s[i]=='?')
        {
            if(!k) continue;
            if(a < right[i][1]) ++a, s[i]='A',--k;
            else
            {
                if(right[i][2] >= k) continue;
                else
                {
                    s[i] = 'B'; ++b; --k;
                }
            }
        }
    }

    ll ans = 0;
    for(int i=n-1;i>=0;i--)
    {
        if(s[i]=='B') ans += leftA[i];
    }
    cout << ans << endl;
}
int main()
{
    life_is_a_race
    int t=1; 
    cin>>t;
    for(int i=1;i<=t;i++) solve(i);
}

Information

Submit By
Type
Submission
Problem
P1110 Subsequence of AB
Language
C++17 (G++ 13.2.0)
Submit At
2024-10-11 21:54:07
Judged At
2024-10-11 21:54:07
Judged By
Score
1
Total Time
5ms
Peak Memory
584.0 KiB