Submission #50419791


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#if __has_include(<atcoder/all>)
#include <atcoder/all>
using namespace atcoder;
#endif
using ll = long long;
using ld = long double;
using ull = unsigned long long;
#define endl "\n"
typedef pair<int, int> Pii;
#define REP(i, n) for (int i = 0; i < (n); ++i)
#define REP3(i, m, n) for (int i = (m); (i) < int(n); ++ (i))
#define rep(i,a,b) for(int i=(int)(a);i<(int)(b);i++)
#define ALL(x) begin(x), end(x)
#define rrep(i,a,b) for(int i=a;i>=b;i--)
#define fore(i,a) for(auto &i:a)
#define all(s) (s).begin(),(s).end()
#define drep2(i, m, n) for (int i = (m)-1; i >= (n); --i)
#define drep(i, n) drep2(i, n, 0)
#define rever(vec) reverse(vec.begin(), vec.end())
#define sor(vec) sort(vec.begin(), vec.end())
#define fi first
#define FOR_(n) for (ll _ = 0; (_) < (ll)(n); ++(_))
#define FOR(i, n) for (ll i = 0; (i) < (ll)(n); ++(i))
#define se second
#define pb push_back
#define P pair<ll,ll>
#define PQminll priority_queue<ll, vector<ll>, greater<ll>>
#define PQmaxll priority_queue<ll,vector<ll>,less<ll>>
#define PQminP priority_queue<P, vector<P>, greater<P>>
#define PQmaxP priority_queue<P,vector<P>,less<P>>
#define NP next_permutation
//const ll mod = 1000000009;
const ll mod = 998244353;
//const ll mod = 1000000007;
const ll inf = 4100000000000000000ll;
const ld eps = ld(0.00000000001);
static const long double pi = 3.141592653589793;
template<class T>void vcin(vector<T> &n){for(int i=0;i<int(n.size());i++) cin>>n[i];}
template<class T,class K>void vcin(vector<T> &n,vector<K> &m){for(int i=0;i<int(n.size());i++) cin>>n[i]>>m[i];}
template<class T>void vcout(vector<T> &n){for(int i=0;i<int(n.size());i++){cout<<n[i]<<" ";}cout<<endl;}
template<class T>void vcin(vector<vector<T>> &n){for(int i=0;i<int(n.size());i++){for(int j=0;j<int(n[i].size());j++){cin>>n[i][j];}}}
template<class T>void vcout(vector<vector<T>> &n){for(int i=0;i<int(n.size());i++){for(int j=0;j<int(n[i].size());j++){cout<<n[i][j]<<" ";}cout<<endl;}cout<<endl;}
void yes(bool a){cout<<(a?"yes":"no")<<endl;}
void YES(bool a){cout<<(a?"YES":"NO")<<endl;}
void Yes(bool a){cout<<(a?"Yes":"No")<<endl;}
void possible(bool a){ cout<<(a?"possible":"impossible")<<endl; }
void Possible(bool a){ cout<<(a?"Possible":"Impossible")<<endl; }
void POSSIBLE(bool a){ cout<<(a?"POSSIBLE":"IMPOSSIBLE")<<endl; }
#define FOR_R(i, n) for (ll i = (ll)(n)-1; (i) >= 0; --(i))
template<class T>auto min(const T& a){ return *min_element(all(a)); }
template<class T>auto max(const T& a){ return *max_element(all(a)); }
template<class T,class F>void print(pair<T,F> a){cout<<a.fi<<" "<<a.se<<endl;}
template<class T>bool chmax(T &a,const T b) { if (a<b) { a=b; return 1; } return 0;}
template<class T>bool chmin(T &a,const T b) { if (b<a) { a=b; return 1; } return 0;}
template<class T> void ifmin(T t,T u){if(t>u){cout<<-1<<endl;}else{cout<<t<<endl;}}
template<class T> void ifmax(T t,T u){if(t>u){cout<<-1<<endl;}else{cout<<t<<endl;}}
ll fastgcd(ll u,ll v){ll shl=0;while(u&&v&&u!=v){bool eu=!(u&1);bool ev=!(v&1);if(eu&&ev){++shl;u>>=1;v>>=1;}else if(eu&&!ev){u>>=1;}else if(!eu&&ev){v>>=1;}else if(u>=v){u=(u-v)>>1;}else{ll tmp=u;u=(v-u)>>1;v=tmp;}}return !u?v<<shl:u<<shl;}
ll modPow(ll a, ll n, ll mod) { if(mod==1) return 0;ll ret = 1; ll p = a % mod; while (n) { if (n & 1) ret = ret * p % mod; p = p * p % mod; n >>= 1; } return ret; }
vector<ll> divisor(ll x){ vector<ll> ans; for(ll i = 1; i * i <= x; i++){ if(x % i == 0) {ans.push_back(i); if(i*i!=x){ ans.push_back(x / ans[i]);}}}sor(ans); return ans; }
ll pop(ll x){return __builtin_popcountll(x);}
ll poplong(ll x){ll y=-1;while(x){x/=2;y++;}return y;}
P hyou(P a){ll x=fastgcd(abs(a.fi),abs(a.se));a.fi/=x;a.se/=x;if(a.se<0){a.fi*=-1;a.se*=-1;}return a;}
P Pplus(P a,P b){ return hyou({a.fi*b.se+b.fi*a.se,a.se*b.se});}
P Ptimes(P a,ll b){ return hyou({a.fi*b,a.se});}
P Ptimes(P a,P b){ return hyou({a.fi*b.fi,a.se*b.se});}
P Pminus(P a,P b){ return hyou({a.fi*b.se-b.fi*a.se,a.se*b.se});}
P Pgyaku(P a){ return hyou({a.se,a.fi});}
#define die(a) cout<<a<<endl,exit(0);
#define dier(a) {cout<<a<<endl;return;}
#define diec(a) {cout<<a<<endl;continue;}
template<class T>pair<T,ll> maxid(vector<T> a){ll v=a[0],id=0;for(int i=1;i<a.size();i++){if(chmax(v,a[i])){id=i;}}return {v,id};}
template<class T>pair<T,ll> minid(vector<T> a){ll v=a[0],id=0;for(int i=1;i<a.size();i++){if(chmin(v,a[i])){id=i;}}return {v,id};}
template<class T> vector<pair<T,ll>> RLE(vector<T> a){vector<pair<T,ll>> r;ll v=1;for(int i=1;i<int(a.size());i++){if(a[i]==a[i-1]){v++;}else{r.pb({a[i-1],v});v=1;}}r.pb({a.back(),v});return r;}
void compress(vector<ll> &arr){ll n=arr.size();map<ll,ll> m;for(int i=0;i<n;i++){m[arr[i]]=0;}ll s=0;for(auto& i:m){i.second=s++;}for(int i=0;i<n;i++){arr[i]=m[arr[i]];}}
vector<pair<char,ll>> RLE(string a){vector<pair<char,ll>> r;ll v=1;for(int i=1;i<int(a.size());i++){if(a[i]==a[i-1]) v++;else{r.pb({a[i-1],v});v=1;}}r.pb({a.back(),v});return r;}
template <int N> struct ndFORimpl {
  std::array<int, N> v;
  ndFORimpl(std::array<int, N> v_) : v(v_) {}
  struct ndFORitr {
    const std::array<int, N> &v;
    std::array<int, N> tmp;
    bool is_end;
    ndFORitr(const std::array<int, N> &v_) : v(v_), tmp(), is_end(false) {}
    bool operator!=(const ndFORitr &) const { return !is_end; }
    void operator++() {
      int pos = N - 1;
      while (pos != -1) {
        tmp[pos] += 1;
        if (tmp[pos] == v[pos]) {
          tmp[pos] = 0;
          pos -= 1;
        } else {
          break;
        }
      }
      if (pos == -1) {
        is_end = true;
      }
    }
    const std::array<int, N> &operator*() const { return tmp; }
  };
  ndFORitr begin() const { return ndFORitr(v); }
  ndFORitr end() const { return ndFORitr(v); }
};

template <class... Ts> auto ndFOR(Ts... v) {
  return ndFORimpl<std::tuple_size<std::tuple<Ts...>>::value>({v...});
}
void cincout(){
  ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
  cout<< fixed << setprecision(15);
}
ll f(ll a,ll b){
  if(a==b) return 0;
  if(a<b) return 1;
  return 2;
}
using mint = modint998244353;
int main(){
  cincout();
  ll n;
  cin>>n;
  string s;
  cin>>s;
  ll ans=1;
  vector<ll> p,q;
  ll a=0,b=0;
  p.pb(0);
  q.pb(0);
  for(int i=1;i<s.size();i++){
    if(s[i]=='A') a++;
    else b++;
    p.pb(a);
    q.pb(b);
  }
  for(int i=1;i<s.size();i++){
    ll u=p[i-1],v=q[i-1];
    ll x=p[i],y=q[i];
    if(s[0]=='A') u++;
    else v++;
    if(f(u,v)!=f(x,y)) ans++;
  }
  cout<<ans<<endl;
}

Submission Info

Submission Time
Task C - Election
User PCTprobability
Language C++ 20 (gcc 12.2)
Score 600
Code Size 6618 Byte
Status AC
Exec Time 22 ms
Memory 20756 KiB

Compile Error

Main.cpp: In function ‘int main()’:
Main.cpp:133:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
  133 |   for(int i=1;i<s.size();i++){
      |               ~^~~~~~~~~
Main.cpp:139:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
  139 |   for(int i=1;i<s.size();i++){
      |               ~^~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 4
AC × 30
Set Name Test Cases
Sample sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt
All in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt
Case Name Status Exec Time Memory
in01.txt AC 1 ms 3504 KiB
in02.txt AC 1 ms 3464 KiB
in03.txt AC 1 ms 3676 KiB
in04.txt AC 1 ms 3644 KiB
in05.txt AC 18 ms 20756 KiB
in06.txt AC 19 ms 20696 KiB
in07.txt AC 20 ms 20680 KiB
in08.txt AC 18 ms 20600 KiB
in09.txt AC 17 ms 20684 KiB
in10.txt AC 1 ms 3536 KiB
in11.txt AC 1 ms 3452 KiB
in12.txt AC 1 ms 3348 KiB
in13.txt AC 1 ms 3660 KiB
in14.txt AC 22 ms 20524 KiB
in15.txt AC 17 ms 20684 KiB
in16.txt AC 16 ms 20696 KiB
in17.txt AC 17 ms 20524 KiB
in18.txt AC 17 ms 20524 KiB
in19.txt AC 17 ms 20652 KiB
in20.txt AC 17 ms 20748 KiB
in21.txt AC 17 ms 20752 KiB
in22.txt AC 16 ms 20596 KiB
in23.txt AC 1 ms 3464 KiB
in24.txt AC 1 ms 3648 KiB
in25.txt AC 1 ms 3464 KiB
in26.txt AC 1 ms 3456 KiB
sample-01.txt AC 1 ms 3444 KiB
sample-02.txt AC 1 ms 3564 KiB
sample-03.txt AC 1 ms 3468 KiB
sample-04.txt AC 1 ms 3476 KiB