Cod sursa(job #945090)

Utilizator Stefanescu_MihaiStefanescu Mihai-Nicolae Stefanescu_Mihai Data 30 aprilie 2013 15:15:45
Problema Divk Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
using namespace std;
int main()
{
    int n,na,k,a,b,i,v[500010],y,ba;
    long long s=0,sp=0;
    unsigned long long sol=0;
    ifstream f1("divk.in");
    ofstream f2("divk.out");
    f1>>n>>k>>a>>b;
    ba=b-a;
    for (i=1;i<=n;++i)
        f1>>v[i];
    na=n-a+1;
    for (i=1;i<=a;++i)
        s+=v[i];
    if (!(s%k))
        ++sol;
    for (sp=s,i=1;i<=ba&&i+a<=n;++i)
    {
        sp+=v[a+i];
        if (!(sp%k))
            ++sol;
    }
    for (i=2;i<=na;++i)
    {
        s-=v[i-1];
        s+=v[i+a-1];
        if (!(s%k))
            ++sol;
        for (sp=s,y=1;y<=ba&&i+a+y-1<=n;++y)
        {
            sp+=v[i+a+y-1];
            if (!(sp%k))
                ++sol;
        }
    }
    f2<<sol<<'\n';
    f1.close();
    f2.close();
    return 0;
}