Submission #61030

#TimeUsernameProblemLanguageResultExecution timeMemory
61030gusfringFoehn Phenomena (JOI17_foehn_phenomena)C++14
100 / 100
353 ms162632 KiB
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 2e5 + 5;
typedef long long ll;

ll bit[MAXN], A[MAXN], result;
int N, Q, S, T;

void updateP(int pos, int v){
	while(pos <= N){ bit[pos] += v; pos += (pos&(-pos)); }
}
void update(int lo, int hi, int v){
	updateP(lo, v);
	updateP(hi + 1, -v);
}

ll query(int pos){
	ll res = A[pos];
	for(; pos>0; pos-=(pos&(-pos))) res += bit[pos];
	return res;
}

ll val(ll a, ll b){
	if(a < b) return (a - b) * S;
	return (a - b) * T;
}

int main(){
	scanf("%d %d %d %d", &N, &Q, &S, &T);
	for(int i=0; i<=N; ++i) scanf("%lld", &A[i]);
	for(int i=0; i<N; ++i) result += val(A[i], A[i + 1]); 
	while(Q--){
		int l, r, v;
		scanf("%d %d %d", &l, &r, &v);
		result -= val(query(l - 1), query(l));
		if(r < N) result -= val(query(r), query(r + 1));
		update(l, r, v);
		result += val(query(l - 1), query(l));
		if(r < N) result += val(query(r), query(r + 1));
		printf("%lld\n", result);
	}
	return 0;
}

Compilation message (stderr)

foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:31:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d %d %d", &N, &Q, &S, &T);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
foehn_phenomena.cpp:32:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(int i=0; i<=N; ++i) scanf("%lld", &A[i]);
                          ~~~~~^~~~~~~~~~~~~~~
foehn_phenomena.cpp:36:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d %d", &l, &r, &v);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...