Cod sursa(job #1141653)

Utilizator barbuionBarbu Ion barbuion Data 13 martie 2014 00:27:45
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
#include<vector>
using namespace std;
long long nr,x,y,n,k,a,b,i,j,s;
int v;
vector <int> r[100011];

long long sol(int b){
long long nr=0,s=0;int st;
for(int i=0;i<k;i++){
        int st=0;nr=0;
    for(int j=0;j<r[i].size();j++){

            while(st<=j&&r[i][j]-r[i][st]>b)
                {
                    st++;
                }
            if(st<=j)
                    nr+=j-st;
        }
s+=nr;
}
for(int i=0;i<r[0].size();i++)
      if(r[0][i]<=b)
         s++;
return s;
}

int main(){


FILE *f=fopen("divk.in","r");
fscanf(f,"%lld %lld %lld %lld",&n,&k,&a,&b);
v=0;
for(i=1;i<=n;i++){
fscanf(f,"%lld",&j);
v=(v+j)%k;
r[v].push_back(i);
}

fclose(f);

nr=sol(b);
long long nr1=sol(a-1);


  FILE *g=fopen("divk.out","w");
  fprintf(g,"%lld",nr-nr1);
  fclose(g);

return 0;
}