Cod sursa(job #1570002)

Utilizator ciocan_catalinCiocan Catalin - Iulian ciocan_catalin Data 16 ianuarie 2016 09:39:42
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

int t[500005],n,k,a,b;
vector <int> h[100005];

inline void Input()
{
    int i;
    ifstream fin("divk.in");
    fin>>n>>k>>a>>b;
    for(i=1;i<=n;i++)
        fin>>t[i];
    fin.close();
}

inline long long Secv(int L)
{
    int p,i,j;
    long long sol=0;unsigned int lung;
    for(p=0;p<k;p++)
    {
        i=0;
        lung=h[p].size();
        for(j=0;j<lung;j++)
        {
            while(h[p][j]-h[p][i]>L) i++;
            sol+=(j-i+1);
        }
    }
    return sol;
}

inline void Solve()
{
    long long sol;
    int i,s=0;
    h[0].push_back(0);
    for(i=1;i<=n;i++)
        {
            s=(s+t[i])%k;
            h[s].push_back(i);
        }
    sol=Secv(b)-Secv(a-1);
    ofstream fout("divk.out");
    fout<<sol<<"\n";
    fout.close();
}

int main()
{
    Input();
    Solve();
    return 0;
}