Pagini recente » Cod sursa (job #1151886) | Cod sursa (job #159520) | Cod sursa (job #2951496) | Cod sursa (job #232636) | Cod sursa (job #741933)
Cod sursa(job #741933)
#include <iostream>
#include <fstream>
using namespace std;
#define NMAX 500001
const char infile[] = "divk.in";
const char outfile[] = "divk.out";
int V[NMAX];
int S[NMAX];
struct ProblemInput
{
int elementCount;
int* elements;
int* buf;
int divisor;
int minLength;
int maxLength;
};
void readInput(ProblemInput& input, istream & fin)
{
fin >> input.elementCount
>> input.divisor
>> input.minLength
>> input.maxLength;
for(int i = 0 ; i < input.elementCount; i++)
{
fin >> input.elements[i];
}
}
void solve(ProblemInput& input, ostream& fout)
{
int* sum = input.buf;
sum[0] = 0;
for(int i = 0; i < input.elementCount; i++)
{
sum[i + 1] = (sum[i] + input.elements[i]) % input.divisor;
}
int answer = 0;
for(int i = input.minLength; i <= input.maxLength; i++)
{
for(int j = i; j <= input.elementCount; j++)
{
if((sum[j] - sum[j - i]) % input.divisor == 0)
{
answer ++;
}
}
}
fout << answer << "\n";
}
int main(int argc, char* argv[])
{
ProblemInput input;
input.elements = (int*) V;
input.buf = (int*) S;
fstream fin(infile, ios::in);
readInput(input, fin);
fin.close();
fstream fout(outfile, ios::out);
solve(input, fout);
fout.close();
}