Cod sursa(job #1053887)

Utilizator cdascaluDascalu Cristian cdascalu Data 12 decembrie 2013 23:56:31
Problema Divk Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <iostream>
#include <fstream>
#define Nmax 100001
using namespace std;
int N,K,A,B;
int cnt[Nmax],vec[Nmax];
void read_data()
{
    ifstream f("divk.in");
    f>>N>>K>>A>>B;
    for(int i=1;i<=N;++i)
        f>>vec[i];
    f.close();
}
int query(int length)
{
    for(int i=0;i<K;++i)
        cnt[i] = 0;
    cnt[0] = 1;
    int sol = 0;
    for(int i=1;i<=N;++i)
    {
        if(cnt[vec[i]] > 0)
            sol += cnt[vec[i]];
        ++cnt[vec[i]];
        if(i-length >= 0)
            --cnt[vec[i-length]];
    }
    return sol;
}
int main()
{
    read_data();
    ofstream g("divk.out");
    for(int i=1;i<=N;++i)
        vec[i] = (vec[i] + vec[i-1])%K;

    g<<query(B) - query(A-1);
    g.close();
    return 0;
}