Cod sursa(job #2767532)

Utilizator asdfdajksdjfhfghjhfghjkjgv asdfdajksdjfh Data 6 august 2021 16:16:13
Problema Divk Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
using namespace std;

int n, k, a, b, v[500005], sp[500005], nrs, fr[100001];

int main()
{
    ifstream read("divk.in");
    ofstream print("divk.out");

    read >> n >> k >> a >> b;
    int ok = 0;
    for(int i = 1; i <= n; i++)
    {
        read >> v[i];
        if(v[i] != 0) ok = 1;
    }
    if(ok == 0)
    {
        print << nrs;
        return 0;
    }
    for(int i = 1; i <= n; i++)
    {
        sp[i] = (sp[i - 1] + v[i]) % k;
        //cout << sp[i] << ' ';
        if(sp[i] == 0 and i >= a and i <= b)
        {
            nrs++;
        }
            
    }

    // cout<<endl<<"nrs = "<<nrs<<endl;

    for(int i = a + 1 ; i <= n; i++)
    {
        fr[sp[i - a]]++;
        if(i > b + 1)
        {
            fr[sp[i - b - 1]]--;
        }      
        nrs += fr[sp[i]];
    }
    print << nrs;
    return 0;
}