1609B - William the Vigilant - CodeForces Solution


implementation strings *1100

Please click on ads to support us..

Python Code:

import sys
input=lambda:sys.stdin.readline().rstrip()
N,Q=map(int,input().split())
comp=['a','b','c']
S=list(input())
ans=sum([S[i:i+3]==comp for i in range(N-2)])
for i in range(Q):
	temp=0
	q=input().split()
	ind=int(q[0])-1
	for j in range(max(ind-2,0),min(ind+1,N-2)):
		ans-=(S[j:j+3]==comp)
	S[ind]=q[1]
	for j in range(max(ind-2,0),min(ind+1,N-2)):
		ans+=(S[j:j+3]==comp)
	print(ans)

C++ Code:

#include<bits/stdc++.h>
using namespace std;

int main(){

int n,q;
cin>>n>>q;
string s="";
cin>>s;int ans=0;
if(s.size()>2){
for(int i=1;i<n-1;i++){ 
if(s[i]=='b'&&s[i-1]=='a'&&s[i+1]=='c'){
    ans++;
}
}
}
while(q--){

int pos;char sc;
cin>>pos>>sc;

if(s[pos-1]!=sc){

if(pos-2>=0&&pos<n&&s[pos-1]=='b'&&s[pos-1-1]=='a'&&s[pos-1+1]=='c'){
ans--;

}else if(pos-1>=0&&pos+1<n&&s[pos-1]=='a'&&s[pos]=='b'&&s[pos+1]=='c'){
    ans--;
}else if(pos-3>=0&&pos-1<n&&s[pos-1]=='c'&&s[pos-1-1]=='b'&&s[pos-3]=='a'){
    ans--;
}

if(pos>=0&&pos+1<n&&sc=='a'&&s[pos]=='b'&&s[pos+1]=='c'){
    ans++;
}else if(pos-2>=0&&pos<n&&sc=='b'&&s[pos-1-1]=='a'&&s[pos]=='c'){
    ans++;
}else if(pos-3>=0&&pos-2<n&&sc=='c'&&s[pos-2]=='b'&&s[pos-3]=='a'){
    ans++;
}


s[pos-1]=sc;

}
cout<<ans<<endl;
}
// another approach not came into my mind
}


Comments

Submit
0 Comments
More Questions

1581A - CQXYM Count Permutations
337A - Puzzles
495A - Digital Counter
796A - Buying A House
67A - Partial Teacher
116A - Tram
1472B - Fair Division
1281C - Cut and Paste
141A - Amusing Joke
112A - Petya and Strings
677A - Vanya and Fence
1621A - Stable Arrangement of Rooks
472A - Design Tutorial Learn from Math
1368A - C+=
450A - Jzzhu and Children
546A - Soldier and Bananas
32B - Borze
1651B - Prove Him Wrong
381A - Sereja and Dima
41A - Translation
1559A - Mocha and Math
832A - Sasha and Sticks
292B - Network Topology
1339A - Filling Diamonds
910A - The Way to Home
617A - Elephant
48A - Rock-paper-scissors
294A - Shaass and Oskols
1213A - Chips Moving
490A - Team Olympiad