Submission #1297755

#TimeUsernameProblemLanguageResultExecution timeMemory
1297755miyamae_nonoaFoehn Phenomena (JOI17_foehn_phenomena)C++20
0 / 100
357 ms7656 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int maxn = 2e5 + 5;
ll a[maxn],n,q,s,t,fem[4*maxn], diff[4 * maxn];
void add(int i, int val)
{
  for (; i <= n; i += i & -i) fem[i] += val;
}
ll query(int i)
{
  ll res = 0;
  for (; i > 0; i -= i & -i) res += fem[i];
  return res;
}
ll windUpd(ll x)
{
  if (x > 0) return -s * x;
  else return -x * t;
}
void update(int id, ll val)
{
  if (id < 1 || id > n) return;
  ll old = windUpd(diff[id]);
  diff[id] += val;
  ll cur = windUpd(diff[id]);
  add(id, cur - old);
}
int main()
{
  cin >> n >> q >> s >> t;
  cin >> a[0];
  for (int i=1;i<=n;i++) cin >> a[i];
  for (int i=1;i<=n;i++) diff[i] = a[i] - a[i-1];
  for (int i = 1; i <= n; i++) add(i, windUpd(diff[i]));
  while (q--){
    int l,r; ll x;
    cin >> l >> r >> x;
    update(l,x);
    if (r < n) update(r+1,-x);
    cout << query(n) << endl;
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...