1852C - Ina of the Mountain - CodeForces Solution


data structures dp greedy math

Please click on ads to support us..

C++ Code:

#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx,popcnt,sse4,abm")
#include<bits/stdc++.h>
//#pragma GCC target("popcnt")
using namespace std;
#define int long long
int ttt;
int n;int K;
int ar[500005];



void solve(){
cin>>n>>K;
for(int i=1;i<=n;i++){
    cin>>ar[i];
    ar[i]%=K;
}
priority_queue<int,vector<int>,greater<int>>pq;
int ans=0;
int nw=0;
for(int i=1;i<=n;i++){
int dv=nw/K;
//if(ar[i]!=0){
//if(ar[i]==ar[i-1]&&i>=2){continue;}
    if(ar[i]<=nw){
        int v=dv*K+ar[i];
        if(v<=nw){
            pq.push((dv+1)*K+ar[i]-nw);
          //  cout<<(dv+1)*K+ar[i]-nw<<" ";
            nw=v;
        }else{
            pq.push(dv*K+ar[i]-nw);
        //    cout<<dv*K+ar[i]-nw<<" ";
            v=(dv-1)*K+ar[i];
            nw=v;
        }
    }else{
        int v=ar[i];
        int c=v-nw;
        if(pq.size()&&pq.top()<c){
            c=pq.top();
            pq.pop();
            pq.push(v-nw);
        }
        nw=ar[i];
        ans+=c;
    }
//}
//cout<<nw<<" "<<ans<<endl;


}
cout<<ans<<endl;


}


signed main()
{
    cin.tie(0);
    ios_base::sync_with_stdio(0);
cin>>ttt;
while(ttt--)solve();



}


Comments

Submit
0 Comments
More Questions

71A - Way Too Long Words
160A - Twins
1A - Theatre Square
1614B - Divan and a New Project
791A - Bear and Big Brother
1452A - Robot Program
344A - Magnets
96A - Football
702B - Powers of Two
1036A - Function Height
443A - Anton and Letters
1478B - Nezzar and Lucky Number
228A - Is your horseshoe on the other hoof
122A - Lucky Division
1611C - Polycarp Recovers the Permutation
432A - Choosing Teams
758A - Holiday Of Equality
1650C - Weight of the System of Nested Segments
1097A - Gennady and a Card Game
248A - Cupboards
1641A - Great Sequence
1537A - Arithmetic Array
1370A - Maximum GCD
149A - Business trip
34A - Reconnaissance 2
59A - Word
462B - Appleman and Card Game
1560C - Infinity Table
1605C - Dominant Character
1399A - Remove Smallest