Submission #59662162


Source Code Expand

#include <bits/stdc++.h>
#include<atcoder/all>
#define rep(i,n) for(int i=0;i<(n);i++)
using namespace std;
using namespace atcoder;
#define all(a) a.begin(),a.end()
typedef long long ll;
typedef pair<ll,ll> P;
constexpr ll mod=998244353;
typedef modint998244353 mi;

int substr_match(string s,string t){
    int n=s.size();
    string sr,sg,sb;
    rep(i,n){
        if(s[i]=='R'){
            sr.push_back('R');
            sg.push_back('B');
            sb.push_back('G');
        }
        if(s[i]=='G'){
            sr.push_back('B');
            sg.push_back('G');
            sb.push_back('R');
        }
        if(s[i]=='B'){
            sr.push_back('G');
            sg.push_back('R');
            sb.push_back('B');
        }
    }
    int ans=0;
    mi ht=0,hr=0,hg=0,hb=0;
    int base=1213;
    rep(i,n){
        hr=hr*base+sr[i];
        hg=hg*base+sg[i];
        hb=hb*base+sb[i];
        ht=ht+pow_mod(base,i,mod)*t[n-1-i];
        if(ht==hr||ht==hg||ht==hb){
            ans++;
        }
    }
    return ans;
}

int all_same(string s){
    rep(i,s.size()-1){
        if(s[i]!=s[i+1])return 0;
    }
    return 1;
}

int main(){
    int n;cin>>n;
    string s,t;cin>>s>>t;

    int ans=0;
    ans+=substr_match(s,t);
    ans+=substr_match(t,s);

    string diag;
    rep(i,n){
        if(s[i]==t[i])diag.push_back(s[i]);
        else{
            if(s[i]!='R'&&t[i]!='R')diag.push_back('R');
            if(s[i]!='G'&&t[i]!='G')diag.push_back('G');
            if(s[i]!='B'&&t[i]!='B')diag.push_back('B');
        }
    }
    ans-=all_same(diag);
    cout<<ans<<endl;
}

Submission Info

Submission Time
Task 047 - Monochromatic Diagonal(★7)
User Rho17
Language C++ 20 (gcc 12.2)
Score 7
Code Size 1660 Byte
Status AC
Exec Time 252 ms
Memory 12824 KiB

Compile Error

Main.cpp: In function ‘int all_same(std::string)’:
Main.cpp:3:31: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
    3 | #define rep(i,n) for(int i=0;i<(n);i++)
      |                               ^
Main.cpp:48:5: note: in expansion of macro ‘rep’
   48 |     rep(i,s.size()-1){
      |     ^~~

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 2 / 2 5 / 5
Status
AC × 3
AC × 10
AC × 18
Set Name Test Cases
Sample 00_sample_0_12.txt, 00_sample_1_12.txt, 00_sample_2_12.txt
Subtask1 00_sample_0_12.txt, 00_sample_1_12.txt, 00_sample_2_12.txt, 01_limits_0_12.txt, 01_limits_1_12.txt, 01_limits_2_12.txt, 01_limits_3_12.txt, 01_limits_4_12.txt, 01_limits_5_12.txt, 01_limits_6_12.txt
Subtask2 00_sample_0_12.txt, 00_sample_1_12.txt, 00_sample_2_12.txt, 01_limits_0_12.txt, 01_limits_1_12.txt, 01_limits_2_12.txt, 01_limits_3_12.txt, 01_limits_4_12.txt, 01_limits_5_12.txt, 01_limits_6_12.txt, 02_corner_0__2.txt, 02_corner_1__2.txt, 03_limits_0__2.txt, 03_limits_1__2.txt, 03_limits_2__2.txt, 03_limits_3__2.txt, 04_random_0__2.txt, 04_random_1__2.txt
Case Name Status Exec Time Memory
00_sample_0_12.txt AC 1 ms 3416 KiB
00_sample_1_12.txt AC 1 ms 3420 KiB
00_sample_2_12.txt AC 1 ms 3496 KiB
01_limits_0_12.txt AC 1 ms 3516 KiB
01_limits_1_12.txt AC 3 ms 3564 KiB
01_limits_2_12.txt AC 1 ms 3400 KiB
01_limits_3_12.txt AC 1 ms 3528 KiB
01_limits_4_12.txt AC 1 ms 3604 KiB
01_limits_5_12.txt AC 1 ms 3572 KiB
01_limits_6_12.txt AC 2 ms 3704 KiB
02_corner_0__2.txt AC 4 ms 3628 KiB
02_corner_1__2.txt AC 228 ms 12764 KiB
03_limits_0__2.txt AC 228 ms 12768 KiB
03_limits_1__2.txt AC 228 ms 12700 KiB
03_limits_2__2.txt AC 229 ms 12820 KiB
03_limits_3__2.txt AC 243 ms 12824 KiB
04_random_0__2.txt AC 178 ms 9348 KiB
04_random_1__2.txt AC 252 ms 12788 KiB