Submission #1322009

#TimeUsernameProblemLanguageResultExecution timeMemory
1322009wangzhiyi33Worst Reporter 3 (JOI18_worst_reporter3)C++20
100 / 100
1014 ms11240 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define ii pair<int,int>
#define fir first
#define sec second
#define pb push_back

vector<array<int,3> >apa;

int solve(int wkt,int mx){
    int tot=0;
    if(wkt<=mx)tot++;

    for(auto [l,r,brp] : apa){
        int grk=(wkt/brp)*brp;
        int sisa=mx-grk;

        tot+=max(0LL,min(r-l+1,r-(-sisa)+1));
    }
    return tot;
}

signed main(){
    int n,qu;
    cin>>n>>qu;
    int d[n+1];
    int inter[n+1];
    for(int q=1;q<=n;q++){
        cin>>d[q];
    }
    inter[1]=d[1];
    int prv=1;

    for(int q=2;q<=n;q++){
        int brp=(inter[prv]+d[q]-1)/inter[prv];
        inter[q]=brp*inter[prv];

        if(inter[q]!=inter[prv]){
            apa.push_back({prv,q-1,inter[prv]});
            prv=q;
        }
    }
    
    apa.push_back({prv,n,inter[n]});

    while(qu--){
        int t,l,r; cin>>t>>l>>r;
        cout<<solve(t,r)-solve(t,l-1)<<endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...