Cod sursa(job #1816927)

Utilizator Coroian_DavidCoroian David Coroian_David Data 27 noiembrie 2016 09:23:29
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>

using namespace std;

FILE *f, *g;

int n, k, a, b;

long long rez;

int s[500001];

int v[100001];

void readFile()
{
    f = fopen("divk.in", "r");

    fscanf(f, "%d%d%d%d", &n, &k, &a, &b);

    int i, nr;

    for(i = 1; i <= n; i ++)
    {
        fscanf(f, "%d", &nr);

        s[i] = (s[i - 1] + nr) % k;
    }

    fclose(f);
}

void solve()
{
    int i;

    for(i = 1; i <= n; i ++)
    {
        if(i >= a)
        {
            v[s[i - a]] ++;
        }

        if(i > b)
        {
            v[s[i - b - 1]] --;
        }

        rez += v[s[i]];
    }
}

void printFile()
{
    g = fopen("divk.out", "w");

    fprintf(g, "%lld\n", rez);

    fclose(g);
}

int main()
{
    readFile();

    solve();

    printFile();

    return 0;
}