#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
int N;
int cnt[ 50001 ] ;
class Solution{
public :
int numberOfSubarrays( vector< int > & nums, int k) {
int i;
int j = 0 ;
int res = 0 ;
N = nums.size ( ) ;
for ( i= ( 0 ) ; i< ( N+ 1 ) ; i++ ) {
cnt[ i] = 0 ;
}
cnt[ j] ++ ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
j + = nums[ i] % 2 ;
cnt[ j] ++ ;
}
for ( i= ( k) ; i< ( N+ 1 ) ; i++ ) {
res + = cnt[ i] * cnt[ i- k] ;
}
return res;
}
}
;
// cLay varsion 20191102-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int N, cnt[50001];
//
// class Solution {
// public:
// int numberOfSubarrays(vector<int>& nums, int k) {
// int i, j = 0, res = 0;
// N = nums.size();
//
// rep(i,N+1) cnt[i] = 0;
// cnt[j]++;
// rep(i,N) j += nums[i]%2, cnt[j]++;
//
// rep(i,k,N+1) res += cnt[i] * cnt[i-k];
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KaW50IE47CmludCBjbnRbNTAwMDFdOwpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgaW50IG51bWJlck9mU3ViYXJyYXlzKHZlY3RvcjxpbnQ+JiBudW1zLCBpbnQgayl7CiAgICBpbnQgaTsKICAgIGludCBqID0gMDsKICAgIGludCByZXMgPSAwOwogICAgTiA9IG51bXMuc2l6ZSgpOwogICAgZm9yKGk9KDApO2k8KE4rMSk7aSsrKXsKICAgICAgY250W2ldID0gMDsKICAgIH0KICAgIGNudFtqXSsrOwogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIGogKz0gbnVtc1tpXSUyOwogICAgICBjbnRbal0rKzsKICAgIH0KICAgIGZvcihpPShrKTtpPChOKzEpO2krKyl7CiAgICAgIHJlcyArPSBjbnRbaV0gKiBjbnRbaS1rXTsKICAgIH0KICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2YXJzaW9uIDIwMTkxMTAyLTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gaW50IE4sIGNudFs1MDAwMV07Ci8vIAovLyBjbGFzcyBTb2x1dGlvbiB7Ci8vIHB1YmxpYzoKLy8gICBpbnQgbnVtYmVyT2ZTdWJhcnJheXModmVjdG9yPGludD4mIG51bXMsIGludCBrKSB7Ci8vICAgICBpbnQgaSwgaiA9IDAsIHJlcyA9IDA7Ci8vICAgICBOID0gbnVtcy5zaXplKCk7Ci8vIAovLyAgICAgcmVwKGksTisxKSBjbnRbaV0gPSAwOwovLyAgICAgY250W2pdKys7Ci8vICAgICByZXAoaSxOKSBqICs9IG51bXNbaV0lMiwgY250W2pdKys7Ci8vIAovLyAgICAgcmVwKGksayxOKzEpIHJlcyArPSBjbnRbaV0gKiBjbnRbaS1rXTsKLy8gICAgIHJldHVybiByZXM7Ci8vICAgfQovLyB9Owo=