Facebook
From shadow9236, 1 Year ago, written in C++.
Embed
Download Paste or View Raw
Hits: 165
  1. // हर हर महादेव
  2. using namespace std;
  3. #include <bits/stdc++.h>
  4. #define int long long int
  5.  
  6. void testcase(){
  7.         int n;
  8.         cin >> n;
  9.         vector<int> a(n);
  10.         for(int i = 0; i < n; i++){
  11.                 cin >> a[i];
  12.         }
  13.        
  14.        
  15.         auto p = a;
  16.         for(int i = 1; i < n; i++){
  17.                 p[i] += p[i-1];
  18.         }
  19.         vector<int> dp(n);
  20.        
  21.         vector<int> yet = {0};
  22.         vector<int> val = {-1};
  23.        
  24.        
  25.         for(int i = 0; i < n; i++){
  26.                 int in = upper_bound(yet.begin(),yet.end(),p[i]) - yet.begin() - 1;
  27.                 dp[i] = p[i] - (val[in] == -1 ? 0 : p[val[in]]);
  28.                
  29.                 int x = dp[i] + p[i];
  30.                 while(yet.back() >= x){
  31.                         yet.pop_back();
  32.                         val.pop_back();
  33.                 }
  34.                 yet.push_back(x);
  35.                 val.push_back(i);
  36.                
  37.         }
  38.         for(int i = 0; i < n; i++){
  39.                 cout << dp[i] << " \n"[i == n-1];
  40.         }
  41. }
  42.  
  43. int32_t main(){
  44.         ios::sync_with_stdio(false);
  45.         cin.tie(0);
  46.         int tt = 1;
  47.         cin >> tt;
  48.         while(tt--){
  49.                 testcase();
  50.         }
  51.         return (0-0);
  52. }
  53.