Advertisement
mickypinata

TAChi-T009: Maximum Subarray Sum

Dec 6th, 2021
540
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long lli;
  5.  
  6. const int N = 1e5 + 5;
  7.  
  8. set<lli> pmx;
  9. lli qs[N];
  10.  
  11. int main(){
  12.  
  13.     int n;
  14.     lli md;
  15.     scanf("%d%lld", &n, &md);
  16.     for(int i = 1; i <= n; ++i){
  17.         scanf("%lld", &qs[i]);
  18.         qs[i] = (qs[i] + qs[i - 1]) % md;
  19.     }
  20.     lli mx = 0;
  21.     pmx.insert(0);
  22.     for(int i = 1; i <= n; ++i){
  23.         lli x = qs[i];
  24.         set<lli>::iterator itr = pmx.lower_bound(qs[i] + 1);
  25.         if(itr != pmx.end()){
  26.             x = (md + qs[i] - *itr) % md;
  27.         }
  28.         mx = max(mx, x);
  29.         pmx.insert(qs[i]);
  30.     }
  31.     cout << mx;
  32.  
  33.     return 0;
  34. }
  35.  
Advertisement
RAW Paste Data Copied
Advertisement