QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#85048 | #5233. Wielki Zderzacz Termionów [A] | anhduc2701 | 0 | 77ms | 27036kb | C++23 | 4.7kb | 2023-03-06 22:12:53 | 2023-03-06 22:12:56 |
Judging History
answer
/*
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimize("unroll-loops")
*/
#include<bits/stdc++.h>
#define int long long
using namespace std;
#define all(x) x.begin(), x.end()
#define len(x) ll(x.size())
#define eb emplace_back
#define PI 3.14159265359
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
#define BIT(x,i) (1&((x)>>(i)))
#define MASK(x) (1LL<<(x))
#define task "WZT"
typedef long long ll;
const ll INF=1e18;
const int maxn=1e6+5;
const int mod=1e9+7;
const int mo=998244353;
using pi=pair<ll,ll>;
using vi=vector<ll>;
using pii=pair<pair<ll,ll>,ll>;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int n,m;
int inv2;
string s;
int inv[maxn];
int invfact[maxn];
int fact[maxn];
int binpow(int a,int b){
int res=1;
while(b>0){
if(b&1)res=res*a%mod;
a=a*a%mod;
b>>=1;
}
return res;
}
int calc(int z,int t){
int d=binpow(2,z);
if(z%2==1){
d-=2;
}
else{
d-=1;
}
cout<<d*inv[3]%mod;
if(d<0)d+=mod;
if(z%6==0){
if(t==1 || t==2){
return d*inv[3]%mod;
}
else{
return (d*inv[3]+1)%mod;
}
}
else if(z%6==1){
if(t==0 || t==1){
return (d*inv[3]+1)%mod;
}
else{
return d*inv[3]%mod;
}
}
else if(z%6==2){
if(t==0 || t==2){
return d*inv[3]%mod;
}
else{
return (d*inv[3]+1)%mod;
}
}
else if(z%6==3){
if(t==1 || t==2){
return (d*inv[3]+1)%mod;
}
else{
return d*inv[3]%mod;
}
}
else if(z%6==4){
if(t==0 || t==1){
return d*inv[3]%mod;
}
else{
return (d*inv[3]+1)%mod;
}
}
else{// z%6==5
if(t==0 || t==2){
return (d*inv[3]+1)%mod;
}
else{
return d*inv[3]%mod;
}
}
}
int N,C,Z;
int ok=0;
int Z1;
int Z2;
int C1;
int C2;
int so=0;
int calc(){
int q=(((N%3+(Z-C)%3)+6))%3;
if(q==1){
q=2;
}
else if(q==2){
q=1;
}
int ans=binpow(2,N)-calc(N,q);
if((Z1==n/2+1 && C2==n/2 ) && n%2==1){
ans--;
}
if(( C1==n/2 && Z2==n/2+1) && n%2==1){
ans--;
}
return (ans%mod+mod)%mod;
}
signed main()
{
cin.tie(0),cout.tie(0)->sync_with_stdio(0);
// freopen(task".inp" , "r" , stdin);
// freopen(task".out" , "w" , stdout);
cin>>n>>m;
cin>>s;
s=' '+s;
inv2=binpow(2,mod-2);
inv[1] =invfact[1]=fact[1]=inv[0]=invfact[0]=fact[0]= 1;
for(int i = 2; i < maxn; ++i){
inv[i] = mod - (mod/i) * inv[mod%i] % mod;
fact[i]= fact[i-1]*i%mod;
invfact[i]=invfact[i-1]*inv[i]%mod;
}
for(int i=1;i<=n;i++){
if(s[i]=='C'){
if(i%2==1){
C1++;
}
else{
C2++;
}
C++;
}
if(s[i]=='Z'){
if(i%2==1){
Z1++;
}
else{
Z2++;
}
Z++;
}
if(s[i]=='N'){
if(i%2==1){
C1++;
}
else{
C2++;
}
if(i%2==1){
Z1++;
}
else{
Z2++;
}
N++;
}
}
for(int i=2;i<=n;i++){
if(s[i]=='C' && s[i-1]=='C'){
so++;
}
if(s[i]=='Z' && s[i-1]=='Z'){
so++;
}
}
// cout<<calc()<<"\n";
for(int i=1;i<=m;i++){
int k;
char c;
cin>>k>>c;
if(s[k]=='C'){
if(k%2==1){
C1--;
}
else{
C2--;
}
C--;
}
if(s[k]=='Z'){
if(k%2==1){
Z1--;
}
else{
Z2--;
}
Z--;
}
if(s[k]=='N'){
if(k%2==1){
C1--;
}
else{
C2--;
}
if(k%2==1){
Z1--;
}
else{
Z2--;
}
N--;
}
if(k>1&& s[k]==s[k-1] && s[k]!='N'){
so--;
}
if(s[k]==s[k+1] && s[k]!='N' && k<n){
so--;
}
s[k]=c;
if(k>1&& s[k]==s[k-1] && s[k]!='N'){
so++;
}
if(s[k]==s[k+1] && s[k]!='N' && k<n){
so++;
}
if(s[k]=='C'){
if(k%2==1){
C1++;
}
else{
C2++;
}
C++;
}
if(s[k]=='Z'){
if(k%2==1){
Z1++;
}
else{
Z2++;
}
Z++;
}
if(s[k]=='N'){
if(k%2==1){
C1++;
}
else{
C2++;
}
if(k%2==1){
Z1++;
}
else{
Z2++;
}
N++;
}
cout<<calc()<<"\n";
}
return 0;
}
/*
1 1 1 0
2 1 2 1
3 2 3 3
4 5 5 6
5 11 10 11
6 22 21 21
7 43 43 42
8 85 86 85
9 170 171 171
10 341 341 342
11 683 682 683
12 1366 1365 1365
//
// 2^10 /3
// 2^9 * 2/3
// 2^
*/
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 11ms
memory: 26840kb
input:
20 20 CZZCZCCZNCZNZNNCCCZN 10 Z 16 Z 2 C 2 C 2 Z 3 Z 4 C 9 C 6 N 13 N 12 C 8 Z 18 Z 12 C 8 C 5 Z 10 Z 12 Z 9 Z 6 Z
output:
1021 1022 1021 1021 1022 1022 1022 511 1022 2143 1021 1021 1022 1022 1021 1021 1021 1022 1021 510
result:
wrong answer 1st lines differ - expected: '21', found: '1021'
Subtask #2:
score: 0
Wrong Answer
Test #14:
score: 0
Wrong Answer
time: 16ms
memory: 26808kb
input:
100 100 ZCZCCCZZNNZNNCCZNNNZZNCCZNNNZNNCNNZCCCZZZNNCNZCCZNNNZNZNNCZCNNZCZZCNCNNZCZCNNZCZCNCZNNCZZNCCNNNZZCZC 8 C 18 C 53 N 52 N 93 C 48 C 67 C 18 Z 57 Z 31 N 94 Z 90 Z 35 C 58 C 20 Z 12 C 87 N 5 C 71 C 21 Z 72 C 38 C 7 N 15 Z 100 Z 58 Z 77 N 87 C 37 Z 26 Z 64 Z 83 N 5 Z 82 C 71 C 37 Z 62 Z 36 N 28 N...
output:
625968344251936681 812984175625968344 625968344251936682 625968344251936682 812984175625968345 812984175625968345 812984175625968345 812984175625968344 906492091812984175 906492091812984175 453246045906492091 726623026453246046 726623026453246045 726623026453246045 726623026453246045 863311516726623...
result:
wrong answer 1st lines differ - expected: '251936682', found: '625968344251936681'
Subtask #3:
score: 0
Wrong Answer
Test #27:
score: 0
Wrong Answer
time: 34ms
memory: 26856kb
input:
10000 5000 NCZNZCCZCNCZCNCZZCCZCNZNZZNNCCNCZCNZCZCNZCNNZZNZZZNZCCZZZCCNCZNZCCNZCZZCNCZZNNNZCCCZNNZNZCCZNNCNCCCNZNNZCNCCCCZZZNNZNZNCCZCNNZNCCCNNZCNCNNZNCNCZNNCCZCCZNZCNZNCNNNZZNNNCNZNCNNCZCNNZZCCNCZCNNNNZCCNZCCCZZNZZCCZNNNZNNCZZNZZCNCZNNCCNZZCZNNNNCCZCCZCCZCCCZNNCCZZCCZZNCNCCCZNCCCZCZNNNCNNNCNZCCZNZZ...
output:
758425343516850681 51685068033701354 758425343516850681 758425343516850681 758425343516850681 51685068033701354 51685068033701354 51685068033701353 3370135367402707 67402707134805415 134805414269610830 134805414269610830 67402707134805415 134805414269610830 134805414269610830 269610829539221659 1348...
result:
wrong answer 1st lines differ - expected: '516850681', found: '758425343516850681'
Subtask #4:
score: 0
Wrong Answer
Test #38:
score: 0
Wrong Answer
time: 21ms
memory: 26900kb
input:
30000 20000 ZZNNZNNZNNCZNNCCNZCCZZZZZZCZNNCCZCCCZNNNZCZNCCCZCCCNCZZNZCCNCZNNZCNZZZCZCNNCNNZCCNNCCCCCZZNCNZZZCZCCNZNZZNNNCCCZNCCZNNZZCNCCNNNZZZZZNCNNZCZNCZNCCZCZZCNCZNNNCCNZCCCCCCNZNNCZZNCNZNNCZCNCZNCZZNZZNNCZCZCNZZCNNNNZNNZZZNZZNNNNNZCZCNNZZNCZCZCCNCCZZNCCCZZNZZCNNCNZZNNZNCCCZZNCCZCCNZCNCCZCCNNNNCZC...
output:
627728133255456260 627728133255456260 627728133255456260 255456259510912519 627728133255456259 627728133255456259 627728133255456259 313864066627728133 313864066627728133 313864066627728133 313864066627728133 313864066627728134 627728133255456260 313864066627728133 313864066627728133 313864066627728...
result:
wrong answer 1st lines differ - expected: '627728134', found: '627728133255456260'
Subtask #5:
score: 0
Wrong Answer
Test #50:
score: 0
Wrong Answer
time: 40ms
memory: 27008kb
input:
100000 50000 NNCZNCNCCZCZNCZZNNNNNZCNZCCCZCNCNZNCNZCNCCZZCZZNCZNZZNZCCCCNZNZNNNNNZNNCZNCZCNNZNCCNNZCNZNCNNZNZZCZNNCCCNCNNZCNCNNNNCZNNZNZCZNZZCCZNCCNZCNZZCNNZCNCNZNZNNZZCZZCCCCNCZZNZZCZCZNCNZZZCNNZNZCCZCNCZZNNCCNZNZNNCZCNCCCCNCNZZZZNNNCNZNCNCNCNCCZNCZNCNNZNCCNNNCNZZCZZCNZNZNCNCCZNNNCZCZCCCZCNCNZNCNZC...
output:
380433568760867136 380433568760867136 380433568760867137 690216787380433569 690216787380433568 690216787380433568 845108397690216788 422554198845108397 422554198845108397 422554198845108397 845108397690216787 690216787380433568 690216787380433568 690216787380433569 690216787380433569 690216787380433...
result:
wrong answer 1st lines differ - expected: '760867136', found: '380433568760867136'
Subtask #6:
score: 0
Wrong Answer
Test #62:
score: 0
Wrong Answer
time: 72ms
memory: 27008kb
input:
200000 100000 ZNCCNZCNCZZZZZZNNNNCNZCCCNNNCCZNCZCCZZNZZCZCZCCCNZCNNNNNCNNCZCZNCCCZZNNZNZZZNCZNNZCNZCCNCZCCZNNZCNCCNZNCNNNNZZNNNZCCCZZNNZCNCNNCZNZZNNZZZCCCCCCNNNNNNCNZCCNCNZCZZNCNCNCCNZCZCCZNNNNZZZNCCCCNNNCNZCCNCCZCZCNCCNCNCZNNNCNZZNNZCZZZNZCZNNNZNZZNNCCCCCCZNCNNNZCNZZCZZNCCZNCNCCCNCCZCNZNZCZNZZCCNCZ...
output:
858713825717427644 858713825717427644 717427644434855281 717427644434855282 717427644434855282 858713825717427645 929356916858713826 858713825717427645 858713825717427645 858713825717427645 929356916858713826 929356916858713826 964678461929356916 929356916858713826 929356916858713826 929356916858713...
result:
wrong answer 1st lines differ - expected: '717427645', found: '858713825717427644'
Subtask #7:
score: 0
Wrong Answer
Test #75:
score: 0
Wrong Answer
time: 54ms
memory: 27036kb
input:
200000 100000 CCNNCZCNZCCCNCZZNZCCNCNCNNZCZZZCCZCCCCCNCZZNNZNCZNCZZNNCCNZZZZZNNNNZNNCZCNZCZNCNCZZZCNZNZNNCZNNNCCCCNNCZCCNNCZZCNZCNCCZZNZNNCNCCCNNZNNZZNZZCCNNCCZNZCNCNNZNCNNCNZZNZZNNZNNCCNCCNNZCCNZNCNZNCZNCNCNZCCZNCZNNZNNNZNZCCZNCZCZNZZNZCZZZCNCNZZZZZNNZNZZCCNNZNCNNNZNNNNZCNCCCCCCCNZCNCCZZCNNCNZCNZNC...
output:
732326939464653872 464653872929307745 464653872929307745 464653872929307745 732326939464653873 464653872929307745 464653872929307744 464653872929307745 929307744858615483 929307744858615483 858615482717230958 858615482717230957 858615482717230957 717230957434461908 858615482717230957 717230957434461...
result:
wrong answer 1st lines differ - expected: '732326940', found: '732326939464653872'
Subtask #8:
score: 0
Wrong Answer
Test #85:
score: 0
Wrong Answer
time: 52ms
memory: 26940kb
input:
200000 100000 ZZCCCZZCCZNZCZCZNCZCCZCNNNCZZZCNCZCCZCCZNZCCCNNCZZZNCNNCZZNCNCNNCCCZNCNZZCZCNCNCNCZCZCZNNNCNCCCCZNZNZNCCNCCCCNCCZZZNNZCCCCCNZNNZNCCCCZZZZCCNNZZNCNCZNCNCNNNZNZNZNCCNCNZCZCCCNNCCNNZNCNZCCZNZCZCCCZNZCNNCNNZZCCNZNZCZNZCNCCZZNZNCNCZCNNCCCNZNNNCZNNZCZZZCCZCNNZZNZNZCZCCCNNZCZCCCNNZZCZZZNNNZCC...
output:
758095222516190438 379047611758095223 379047611758095223 379047611758095223 189523805379047611 189523805379047611 189523805379047611 189523805379047611 594761906189523806 594761906189523805 594761906189523805 189523805379047611 379047611758095222 379047611758095223 189523805379047612 189523805379047...
result:
wrong answer 1st lines differ - expected: '516190438', found: '758095222516190438'
Subtask #9:
score: 0
Wrong Answer
Test #94:
score: 0
Wrong Answer
time: 77ms
memory: 26976kb
input:
200000 100000 ZNCZCCCNNCCNCNCZCCZZCNNNNCZCCCZNNCNZNCNCNCZNCZNZNNZNNCCNZZCZZNZZCCNNNZCNNZCZCNCNZNZZNCZNZZNZZNZZZCNCNZNZCNNNCZZNCNZCZNCNNZZCZCCZZZZCZNNNCCCZCNNCNCNCNNCNNCCZNCZZCZZZZCCCZNCCCNCCZCNCCNNZCNNNCCZNCZCZNZCCZNNNZCCCZZZCZCCCZNZCCNNNNZNNCZNCNZNZNCNCCZNCZNZZCZNZNNCCNCNZNZZNCNZCCCNCZZNNNZNNNNZZNC...
output:
711855308423710609 855927657711855308 927963832855927658 927963832855927658 963981919927963832 963981919927963832 963981919927963832 963981919927963832 927963832855927658 927963832855927658 927963832855927658 927963832855927658 963981919927963832 981990963963981920 963981919927963833 981990963963981...
result:
wrong answer 1st lines differ - expected: '423710609', found: '711855308423710609'
Subtask #10:
score: 0
Wrong Answer
Test #103:
score: 0
Wrong Answer
time: 73ms
memory: 27012kb
input:
200000 100000 CZNCNZZNNNZZNCCZNZCCNNNCZNCNZCCNNCNCCNNZCNZCNCCCCZNZNZNCCNNNNCCNCNZZNZNCZNZZCZNCCNZZCNZNZZCNNNNCZNCCZCZCCCZNNCZZNCZCZNCZNZZNZNCZCZCNNCZCZCCZNZCCNNCCCCZCCNNCNZNCCCNZZZZZZCCZZNCNCZNZZNCZCCZCNZNZZNNNCCCCNZCCZCNZZCNNCCNZZCZZCZZZZZNNZCNCZZZCCCCZCNZZZZNZZZZCCCZZCCNCZNCCZZCNNNCCNZZZCNCZNZCZNC...
output:
54194379883887589 83887589167775179 167775179335550359 167775179335550359 83887589167775179 54194379883887590 54194379883887590 770971902541943798 770971902541943799 385485951770971903 385485951770971903 385485951770971903 385485951770971903 192742975385485951 596371491192742975 298185745596371491 2...
result:
wrong answer 1st lines differ - expected: '83887589', found: '54194379883887589'