Cod sursa(job #1015460)
Utilizator | Data | 24 octombrie 2013 18:08:56 | |
---|---|---|---|
Problema | Divk | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("divk.in");
ofstream g ("divk.out");
int n, k, a, b;
int suma[500001], aparitii[500001];
void citeste ()
{
f>>n>>k>>a>>b;
for (int i=1; i<=n; i++)
{
f>>suma[i]; suma[i]=(suma[i]+suma[i-1])%k;
}
}
void rezolva ()
{
long long rezultat=0;
for (int i=a; i<=n; i++)
{
aparitii[suma[i-a]]++;
if (i>b) aparitii[suma[i-b-1]]--;
rezultat+=aparitii[suma[i]];
}
g<<rezultat;
}
int main ()
{
citeste ();
rezolva ();
}