Cod sursa(job #2023946)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 19 septembrie 2017 18:31:44
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("divk.in");
ofstream cout("divk.out");
struct fint
{
    int x,i;
};
bool cmp(fint a,fint b)
{
    return a.x<b.x;
}
fint v[500005];
int main()
{
    ios_base::sync_with_stdio(0);
    int n,k,a,b,x,s=0,st=1,dr;
    long long sum=0;
    cin>>n>>k>>a>>b;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        s=(s+x)%k;
        v[i].x=s;
        v[i].i=i;
    }
    sort(v+1,v+n+1,cmp);
    v[n+1].x=-1;
    for(int i=1;i<=n;i++)
        if(v[i].x!=v[i+1].x)
        {
            dr=i;
            for(int st2=st;st2<=dr;st2++)
                for(int dr2=st2;dr2<=dr;dr2++)
                {
                    int x=abs(v[st2].i-v[dr2].i);
                    if(a<=x and x<=b)
                        s++;
                }
            st=i+1;
        }
    int i=a;
    while(v[i].x==0 and i<=b)
        i++;
    cout<<s+i-a;;
    return 0;
}