Cod sursa(job #1142048)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 13 martie 2014 14:14:43
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <fstream>
#include <vector>
#define NMax 100001
using namespace std;
ifstream f("divk.in");
ofstream g("divk.out");
vector <int> v[NMax];
int n, k, a, b, i, j, st, dr, s, el, nr;
long long numar(int b){
    int st;
    long long nr=0;
    for (int i=0; i<=k-1; i++) {
        st=0;
       for (dr=0; dr<v[i].size(); dr++) {
            while(st<dr && v[i][dr]-v[i][st]>b)
                st++;
            nr+=dr-st;
        }
    }
   for(i=0;i<v[0].size();i++)
       if(v[0][i]<=b)
          nr++;
 return nr;
}
int main()
{
    f>>n>>k>>a>>b;
    for (i=1; i<=n; i++) {
        f>>el;
        s=(s+el)%k;
        v[s].push_back(i);
    }
    long long nr1=numar(b);
    long long nr2=numar(a-1);
    g<<nr1-nr2;

    return 0;
}