Cod sursa(job #1071706)

Utilizator RamaStanciu Mara Rama Data 3 ianuarie 2014 13:44:38
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <iostream>
#include <fstream>

using namespace std;

int N,A,B,K;
long long V[500002],nr[100002];

ifstream in("divk.in");
ofstream out("divk.out");

void read()
{
    in>>N>>K>>A>>B;
    for(int i=1;i<=N;i++)
    {
        in>>V[i];
        V[i]=(V[i]+V[i-1])%K;
    }
}
long long solve(int x)
{
    long long res=0;
    for(int i=0;i<K;i++)
        nr[i]=0;
    nr[0]=1;

    for(int i=1;i<=N;i++)
    {
        if(nr[V[i]]>0) res=res+nr[V[i]];
        nr[V[i]]++;
        if(i-x>=0) nr[V[i-x]]--;
    }
    return res;
}

int main()
{
    read();
    out<<solve(B)-solve(A-1);

    return 0;
}