Cod sursa(job #704897)

Utilizator iulian131Moldovan Iulian iulian131 Data 2 martie 2012 21:46:38
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>

long n,k,a,b,v[500001],v1[100001];
long long sol;
FILE *c = fopen("divk.in","r");
FILE *s = fopen("divk.out","w");

void citeste()
{
    fscanf(c,"%d %d %d %d",&n,&k,&a,&b);
    for(long i=1;i<=n;i++)
    {
        fscanf(c,"%d ",&v[i]);
        v[i] = (v[i] + v[i-1]) % k;
        if(v[i] == 0 and i >= a and i <= b)
            sol++;
    }
}

void afisare()
{
    fprintf(s,"%d",sol);
}

void solutie()
{
    for(long i=a+1;i<=n;i++)
    {
        v1[v[i-a]]++;
        if(i > b+1)
            v1[v[i-b-1]]--;
        sol += v1[v[i]];
    }
}

int main()
{
    citeste();
    solutie();
    afisare();
    return 0;
}