Cod sursa(job #3203336)

Utilizator Cazacu2006RazvanRazvan Cazacu Cazacu2006Razvan Data 13 februarie 2024 15:36:32
Problema Divk Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
int n,k,a,b,s[500001],st1[100001],st2[100001],dr[100001],nr;
vector <int> stv[100001];
int main()
{

    fin>>n>>k>>a>>b;
    for(int i=1;i<=n;i++)
    {
        fin>>s[i];
        s[i]=(s[i]+s[i-1])%k;
    }
    stv[0].push_back(0);
    for(int i=1;i<k;i++)
    {
        stv[i].push_back(0);

    }
    stv[0].push_back(1);

    dr[0]=1;
    for(int i=1;i<=n;i++)
    {
        int x=s[i];

     if(dr[x]!=0)
     {

          while(st2[x]<dr[x] && (i-stv[x][st2[x]+1]+1)>a)
        {
            st2[x]++;
        }

        while(st1[x]<dr[x] && (i-stv[x][st1[x]+1]+1)>b)
        {

            st1[x]++;
        }
     }



       if((i-stv[x][st1[x]+1]+1)>b)
        continue;
     fout<<x<<" "<<st2[x]<<" "<<st1[x]<<" "<<dr[x]<<"\n";
      if(st2[x]-st1[x]+1>0 && dr[x]!=0)
       nr+=st2[x]-st1[x];
        stv[x].push_back(i);
        dr[x]++;

    }
    fout<<nr;
    return 0;
}