Simular cada tiro e cada ação do jogador é o suficiente para resolver este problema. Você só precisa guardar num vetor a sequência de tiros, as ações do jogador podem ser coletadas uma de cada vez.
#include<stdio.h>intmain(){char pulo;int N, T, atingido, tiros[50];scanf("%d",&N);for(int k =0; k < N; ++k){scanf("%d",&T);for(int i =0; i < T; ++i){scanf("%d",&tiros[i]); }scanf("\n",&pulo); atingido =0;for(int i =0; i < T; ++i){scanf("%c",&pulo);if((pulo =='S'&& tiros[i] <3) || (pulo =='J'&& tiros[i] >2)){++atingido; } }printf("%d\n", atingido); }return0;}
#include<iostream>#include<vector>usingnamespace std;intmain(){char pulo; vector<int> tiros;int N, T, atingido; cin >> N;for(int k =0; k < N; ++k){ cin >> T;tiros.assign(T,0);for(int i =0; i < T; ++i){ cin >>tiros[i]; } atingido =0;for(int i =0; i < T; ++i){ cin >> pulo;if((pulo =='S'&&tiros[i] <3) || (pulo =='J'&&tiros[i] >2)){++atingido; } } cout << atingido << endl; }return0;}
whileTrue:try: N =int(input())for _ inrange(N): K =int(input()) tiros = [int(x)for x ininput().strip().split(' ')] pulos =input().strip() atingido =0for i inrange(K):if((pulos[i]=='S'and tiros[i]<3) or (pulos[i]=='J'and tiros[i]>2)): atingido +=1print(atingido)exceptEOFError:break