Cod sursa(job #1851700)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 19 ianuarie 2017 23:07:53
Problema Divk Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 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;
int 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;
        v[i] = v[i] % k;
    }
    int lg = 0;
    int sum = 0;
    int T = 0;
    int solant = 1;
    for(int i = 1; i <= n; i++)
    {
        sum = (sum + v[i]) % k;
        fr[v[i]]++;
        lg++;
        if(lg > b)
        {
            lg = b;
            sum = (sum - v[i - b] + k) % k;
            fr[v[i - b]]--;
        }
        if(lg >= a)
            T = T + fr[v[i]] - 1;
    }
    out << T << "\n";
    return 0;
}