Cod sursa(job #1852395)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 20 ianuarie 2017 19:28:11
Problema Divk Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <unordered_map>
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("divk.in");
ofstream out("divk.out");
const int maxn = 500005;
unordered_map <int, int> fr;
long long v[maxn];

int main()
{
    int n, k, a, b;
    in >> n >> k >> a >> b;
    for(int i = 1; i <= n; i++)
    {
        in >> v[i];
        v[i] = (v[i - 1] + v[i]) % k;
    }
    int lg = 0;
    long long T = 0;
    for(int i = 1; i <= n; i++)
    {
        fr[v[i]]++;
        lg++;
        if(lg > b)
        {
            lg = b;
            fr[v[i - b]]--;
        }
        if(lg >= a)
            T = T + fr[v[i]] - 1;
    }
    out << T << "\n";
    return 0;
}