Submission #1272765

#TimeUsernameProblemLanguageResultExecution timeMemory
1272765muhammad-ahmadFish 3 (JOI24_fish3)C++20
16 / 100
2094 ms13848 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define endl '\n' signed main(){ int N, D; cin >> N >> D; int C[N + 1] = {}; bool S2 = 1; for (int i = 1; i <= N; i++) { cin >> C[i]; if (C[i] > 1) S2 = 0; } int Q; cin >> Q; int L[Q + 1], R[Q + 1]; for (int i = 1; i <= Q; i++) cin >> L[i] >> R[i]; if (S2){ int A[N + 1] = {}, P[N + 1] = {}; for (int i = 1; i <= N; i++){ if (C[i] == 1) A[i] = A[i - 1] + 1; P[i] = P[i - 1] + C[i]; } for (int i = 1; i <= Q; i++){ int l = L[i], r = R[i]; if (P[r] - P[l - 1] <= A[r]){ cout << 0 << endl; } else if (D == 1){ cout << P[r] - P[l - 1] - A[r] << endl; } else cout << -1 << endl; } return 0; } for (int q = 1; q <= Q; q++){ int l = L[q], r = R[q], suf[N + 1] = {}; int lst = 0, pos = 1, ans = 0; int c[N + 1]; for (int i = 0; i <= N; i++) c[i] = C[i]; for (int i = l; i <= r; i++){ c[i] -= lst; lst += c[i] % D; if (c[i] < 0 or c[i] < c[i] % D) pos = 0; c[i] -= c[i] % D; // cout << c[i] << ' '; } if (!pos) {cout << -1 << endl; continue;} int mi = c[r]; for (int i = r; i >= l; i--){ mi = min(mi, c[i]); suf[i] = mi; } for (int i = l; i <= r; i++){ ans += (c[i] - suf[i]) / D; } cout << ans << endl; // for (int i = 1; i <= n; i) // cout << (pos ? ans : -1) << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...