1888F - Minimum Array - CodeForces Solution


binary search data structures greedy math *2400

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>

#define IOS std::cout.tie(0);std::cin.tie(0)->sync_with_stdio(false);
#define all(x) (x).begin(),(x).end()
#define int long long 
using i64 = long long;
using PII = std::array<int,2>;
void solve(){
    int n;
    std::cin>>n;
    std::vector<int>a(n);
    for(auto&i : a)std::cin>>i;
    a.push_back(0);
    auto b = a;
    for(int i=1;i<n;i++)b[i] = a[i]-a[i-1];
    a.swap(b);
    int q;
    std::cin>>q;
    std::vector<std::array<int,3>>p(q);
    std::set<std::array<int,2>>st;
    
    auto up = [&](int pos,int x){
          if(x==0)return ;
          auto it = st.lower_bound(PII{pos,-(int)1e18});
          if(it==st.end()||(*it)[0]!=pos){
              st.insert(PII{pos,x});
          }else{ 
              auto[p,y]  = *it;
              st.erase(it);
              if(y+x)st.insert({p,y+x});
          } 
    };
    auto ask = [&](){
        auto it = st.begin();
        if(it!=st.end()&&(*it)[1]<0){
            return 1;
        }  
        return 0;
    };
    int ans = -1;
    for(int i=0;i<q;i++){
        auto&[l,r,x] = p[i];
        std::cin>>l>>r>>x;
        up(l,x);
        up(r+1,-x);
        if(ask()){
            ans = i; 
            std::set<PII>().swap(st);
        }
    } 
    for(int i=0;i<=ans;i++){
        auto&[l,r,x]  =p[i];
        l--,r--;
        a[l] += x;
        a[r+1] -=x;
    }
    for(int i=1;i<n;i++)a[i] += a[i-1];
    for(int i=0;i<n;i++)std::cout<<a[i]<<" \n"[i==n-1];
}

signed main(){
	IOS
	int t=1;
	std::cin>>t;
	while(t--)solve();
	return 0;
}


Comments

Submit
0 Comments
More Questions

1290. Convert Binary Number in a Linked List to Integer
1525. Number of Good Ways to Split a String
72. Edit Distance
563. Binary Tree Tilt
1306. Jump Game III
236. Lowest Common Ancestor of a Binary Tree
790. Domino and Tromino Tiling
878. Nth Magical Number
2099. Find Subsequence of Length K With the Largest Sum
1608A - Find Array
416. Partition Equal Subset Sum
1446. Consecutive Characters
1618A - Polycarp and Sums of Subsequences
1618B - Missing Bigram
938. Range Sum of BST
147. Insertion Sort List
310. Minimum Height Trees
2110. Number of Smooth Descent Periods of a Stock
2109. Adding Spaces to a String
2108. Find First Palindromic String in the Array
394. Decode String
902. Numbers At Most N Given Digit Set
221. Maximal Square
1200. Minimum Absolute Difference
1619B - Squares and Cubes
1619A - Square String
1629B - GCD Arrays
1629A - Download More RAM
1629C - Meximum Array
1629D - Peculiar Movie Preferences