Submission #599918

#TimeUsernameProblemLanguageResultExecution timeMemory
599918PiokemonSnowball (JOI21_ho_t2)C++17
0 / 100
1 ms340 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long int constexpr ll oo = 4611686018427387904; ll sniez[200009]; ll wiatr[200009]; ll wynik(ll lew,ll praw,ll poz, ll lew1,ll praw1,ll poz1, ll lew2,ll praw2,ll poz2, int q){ ll odp = 0; for (int x=1;x<=q;x++){ if (wiatr[x] > 0){ if (poz2 != oo){ poz2 += wiatr[x]; praw2 = max(praw2,poz2); } odp += wiatr[x] - (praw1 - poz1) - max(((poz1 + wiatr[x]) - max(lew2,praw1)),0LL); poz1 += wiatr[x]; praw1 = max(praw1, poz1); if (poz != -oo){ poz += wiatr[x]; praw = max(praw,poz); } } else{ if (poz != -oo){ poz += wiatr[x]; lew = min(lew,poz); } odp += -wiatr[x] - (poz1 - lew1) - max(praw - (poz1 + wiatr[x]),0LL); poz1 += wiatr[x]; lew1 = min(lew1, poz1); if (poz2 != oo){ poz2 += wiatr[x]; lew2 = min(lew2,poz2); } } } return odp; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,q; cin >> n >> q; for (int x=1;x<=n;x++){ cin >> sniez[x]; sniez[x] += 1'000'000'000'000'000'009; } sniez[0] = -oo; sniez[n+1] = oo; for (int x=1;x<=q;x++){ cin >> wiatr[x]; } for (int x=1;x<=n;x++){ cout << wynik(sniez[x-1],sniez[x-1],sniez[x-1],sniez[x],sniez[x],sniez[x],sniez[x+1],sniez[x+1],sniez[x+1],q) << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...