Cod sursa(job #478404)

Utilizator andra23Laura Draghici andra23 Data 18 august 2010 15:03:25
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<iostream>
#include<fstream>

using namespace std;

long long v[500010];
int r[100010];

int main(){
    ifstream f("divk.in");
    ofstream g("divk.out");
    int n, a, b, k, x, i, poza, pozb, rest;
    f>>n>>k>>a>>b;
    long long nr = 0;
    
    f>>x;
    v[1] = x;
    for (i = 2; i <= n; i++){
        f>>x;
        v[i] = v[i-1]+x;
    }
    
    if (v[a]%k == 0)
        nr++;
    
    poza = 1;
    pozb = 1;
    r[v[1]%k]++;
    
    for (i = a+1; i <= n; i++){
        rest = v[i]%k;
        nr = nr+r[rest];
        if (i <= b && v[i]%k == 0)
            nr++;
        pozb++;     
        r[v[pozb]%k]++;
        if (pozb > b-a+1){
            r[v[poza]%k]--;
            poza++;
        }
    }
    
    g<<nr<<'\n';
       
    return 0;
}