Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <map>
- #define lli long long int
- #define MAX_L 100005
- using namespace std;
- char s[MAX_L];
- int pref[MAX_L];
- int main(void) {
- int t;
- int l;
- map <int, int> mapa;
- scanf(" %d", &t);
- while(t--) {
- scanf(" %d", &l);
- scanf(" %s", s);
- mapa.clear();
- for (int i = 0; i < l; i++) {
- if (s[i] == 'a') {
- pref[i] = -2;
- } else if (s[i] == 'b') {
- pref[i] = 3;
- } else {
- pref[i] = 0;
- }
- if (i != 0) {
- pref[i] += pref[i - 1];
- }
- }
- lli res = 0;
- int seg = 0;
- mapa[0] = 1;
- for (int i = 0; i < l; i++) {
- if (s[i] == 'c') {
- seg++;
- res -= seg;
- } else {
- seg = 0;
- }
- //printf("i = %d, summing = %d\n", i, mapa[pref[i]] - seg);
- res += mapa[pref[i]];
- mapa[pref[i]]++;
- }
- printf("%lld\n", res);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement