#2143. C++-2022年厦门市小学生计算机C++语言竞赛(复赛)-操作题04(序列问题(sequence))(拓展)
C++-2022年厦门市小学生计算机C++语言竞赛(复赛)-操作题04(序列问题(sequence))(拓展)
Background
Description
高老师是一位经验丰富的信息学竞赛指导教师,善于开发学生的创造性思维。周末课上,他给学生留下一道关于01串的思考题(所谓01串就是由字符‘0’和‘1’组成的字符串):给定一个长度为n的01串,他想知道有多少个子串,满足其中1的个数比0的个数多。现在高老师请会编程的你来帮忙计算答案。
对于20%的数据,n≤3000。
对于另外的10%的数据,n≤10^7^,字符串全为1。
对于另外的20%的数据,n≤2×10^5^。
对于另外的20%的数据,n≤2×10^6^。
对于另外的100%的数据,n≤10^7^。
Format
Input
从文件sequence.in中读入数据。
第一行一个整数,表示字符串的长度。
第二行一个字符串,表示01串。
Output
输出到文件sequence.out中。
输出一行,包括一个整数,表示满足条件的子串的个数。
Samples
3
111
1
1
11
11
111
5
11110
1
1
1
1
0
11
11
11
10
111
111
110
1111
1110
11110
6
101010
1
0
1
0
1
0
10
01
10
01
10
101
010
101
010
1010
0101
1010
10101
01010
101010
Limitation
1s, 1024KiB for each test case.