Submission #1204967

#TimeUsernameProblemLanguageResultExecution timeMemory
1204967minhpkFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
70 ms8872 KiB
#include <bits/stdc++.h> #define int long long using namespace std; pair<int,int> z[1000000]; int x[1000000]; int sum=0; int flip[2]; signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int a,b,c,d; cin >> a >> b >> c >> d; cin >> x[0]; c=-c; flip[1]=c; flip[0]=d; for (int i=1;i<=a;i++){ cin >> x[i]; if (x[i]>x[i-1]){ z[i]={abs(x[i]-x[i-1]),1}; sum+=c*abs(x[i]-x[i-1]); }else{ z[i]={abs(x[i]-x[i-1]),0}; sum+=d*abs(x[i]-x[i-1]); } } // cout << sum << " "; for (int i=1;i<=b;i++){ int x,y,t; cin >> x >> y >> t; int del=0; del+= flip[z[x].second]*z[x].first; if (y!=a){ del+= flip[z[y+1].second]*z[y+1].first; } // cout << flip[z[x].second]*z[x].first << " " << flip[z[y+1].second]*z[y+1].first << "\n"; // cout << "\n"; sum-=del; int flip1,flip2; if (z[x].second==1){ flip1=1; }else{ flip1=-1; } if (z[x].first +flip1*t <0){ z[x].first = abs(z[x].first +flip1*t); z[x].second = 1-z[x].second; }else{ z[x].first +=flip1*t; } sum+= flip[z[x].second]*z[x].first; if (y!=a){ if (z[y+1].second==1){ flip2=-1; }else{ flip2=1; } if (z[y+1].first+flip2*t<0){ z[y+1].first = abs(z[y+1].first +flip2*t); z[y+1].second = 1-z[y+1].second; }else{ z[y+1].first = z[y+1].first +flip2*t; } sum+= flip[z[y+1].second]*z[y+1].first; } cout << sum << "\n"; // for (int j=1;j<=a;j++){ // cout << z[j].first << " " << z[j].second << "\n"; // } // cout << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...