Cod sursa(job #1235872)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 30 septembrie 2014 20:18:55
Problema Divk Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>
#include<vector>
#define Nmax 100010
using namespace std;
int x,i,n,k,a,b,val,dif,r,N,j;
long long sol;
 
vector<int> V[Nmax];
 
int main()
{
    freopen("divk.in","r",stdin);
    freopen("divk.out","w",stdout);
 
    scanf("%d %d %d %d",&n,&k,&a,&b);
 
    V[0].push_back(0);
     
    for( i = 1 ; i <= n ; ++i )
    { 
        scanf("%d",&x);
        r=(r+x)%k;
         
        V[r].push_back(i);
         
        N=V[r].size();
        val=V[r][N-1];
         
        for( j = N-1 ; j >= 0 ; --j )
        {
            dif = val - V[r][j] ;
             
            if( dif >= a && dif <= b ) ++sol ;
             
            else if( dif > b )  break;
        }
    }
 
    printf("%d",sol);
 
    return 0;
}