Submission #1152041

#TimeUsernameProblemLanguageResultExecution timeMemory
1152041AgentPenginFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
640 ms14020 KiB
/** * author: AgentPengin ( Độc cô cầu bại ) * created: 23.12.2022 10:08:02 * too lazy to update time **/ #include<bits/stdc++.h> #define EL '\n' #define fi first #define se second #define NAME "TASK" #define ll long long #define lcm(a,b) (a/gcd(a,b))*b #define db(val) "["#val" = " << (val) << "] " #define bend(v) (v).begin(),(v).end() #define sz(v) (int)(v).size() #define ex exit(0) #define int ll using namespace std; const ll mod = 1e9 + 7; const int inf = 0x1FFFFFFF; const int MAXN = 2e5 + 5; int n,q,S,T,a[MAXN]; struct Node { int sum,lazy; } st[MAXN << 2]; void build(int id = 1,int l = 0,int r = n) { if (l > r) return; if (l == r) { st[id].sum = a[l]; return; } int mid = l + r >> 1; build(id << 1, l, mid); build(id << 1 | 1, mid + 1, r); st[id].sum = st[id << 1].sum + st[id << 1 | 1].sum; } void pushDown(int id, int l, int r) { st[id].sum += st[id].lazy * (r - l + 1); if (l != r) { st[id << 1].lazy += st[id].lazy; st[id << 1 | 1].lazy += st[id].lazy; } st[id].lazy = 0; } void update(int u,int v, int val, int id = 1, int l = 0, int r = n) { pushDown(id, l, r); if (v < l || u > r) return; if (u <= l && r <= v) { st[id].lazy += val; pushDown(id, l, r); return; } pushDown(id, l, r); int mid = l + r >> 1; update(u, v, val, id << 1, l, mid); update(u, v, val, id << 1 | 1, mid + 1, r); st[id].sum = st[id << 1].sum + st[id << 1 | 1].sum; } int get(int u,int v, int id = 1, int l = 0,int r = n) { pushDown(id, l , r); if (v < l || u > r) return 0; if (u <= l && r <= v) { return st[id].sum; } int mid = l + r >> 1; return get(u, v, id << 1, l, mid) + get(u, v, id << 1 | 1,mid + 1,r); } signed main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); if (ifstream(NAME".inp")) { freopen(NAME".inp","r",stdin); freopen(NAME".out","w",stdout); } cin >> n >> q >> S >> T; for (int i = 0;i <= n;i++) { cin >> a[i]; } build(); int temp = 0; for (int i = 1;i <= n;i++) { if (a[i] <= a[i - 1]) temp += T * abs(a[i - 1] - a[i]); else temp -= S * abs(a[i] - a[i - 1]); } // 4 * 1 - 2 + 5 while(q--) { int l, r, x; cin >> l >> r >> x; int pos_l_1 = get(l - 1, l - 1); int pos_l = get(l, l); if (pos_l_1 >= pos_l) temp -= T * abs(pos_l_1 - pos_l); else temp += S * abs(pos_l_1 - pos_l); int pos_r = get(r, r); int pos_r_1 = get(r + 1, r + 1); if (r != n && pos_r >= pos_r_1) temp -= T * abs(pos_r - pos_r_1); else if (r != n) temp += S * abs(pos_r - pos_r_1); update(l, r, x); pos_l_1 = get(l - 1, l - 1); pos_l = get(l, l); if (pos_l_1 >= pos_l) temp += T * abs(pos_l_1 - pos_l); else temp -= S * abs(pos_l_1 - pos_l); pos_r = get(r, r); pos_r_1 = get(r + 1, r + 1); if (r != n && pos_r >= pos_r_1) temp += T * abs(pos_r - pos_r_1); else if (r != n) temp -= S * abs(pos_r - pos_r_1); cout << temp << '\n'; } cerr << "\nTime elapsed: " << 1000 * clock() / CLOCKS_PER_SEC << "ms\n"; return 0; } // agent pengin wants to take apio (with anya-san)

Compilation message (stderr)

foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:83:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   83 |         freopen(NAME".inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
foehn_phenomena.cpp:84:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   84 |         freopen(NAME".out","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...