제출 #506395

#제출 시각아이디문제언어결과실행 시간메모리
506395ElegiaThe short shank; Redemption (BOI21_prison)C++17
0 / 100
53 ms8288 KiB
#include <cmath> #include <algorithm> #include <bitset> #include <numeric> #include <iostream> #include <vector> #include <string> #include <set> #include <queue> #include <map> #include <unordered_map> using ull = unsigned long long; using namespace std; const int P = 998244353; int norm(int x) { return x >= P ? x - P : x; } int reduce(int x) { return x < 0 ? x + P : x; } int neg(int x) { return x ? P - x : 0; } void add(int& x, int y) { if ((x += y - P) < 0) x += P; } void sub(int& x, int y) { if ((x -= y) < 0) x += P; } void fam(int& x, int y, int z) { x = (x + y * (ull)z) % P; } int mpow(int x, unsigned k) { if (k == 0) return 1; int ret = mpow(x * (ull)x % P, k >> 1); if (k & 1) ret = ret * (ull)x % P; return ret; } int quo2(int x) { return ((x & 1) ? x + P : x) >> 1; } const int _ = 2000010; int t[_], a[_]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int N, D, T; cin >> N >> D >> T; for (int i = 1; i <= N; ++i) cin >> t[i]; int lst = N, ans = 0; for (int i = N; i; --i) if (t[i] <= T) { a[++ans] = min(T - t[i], lst - i); lst = i - 1; } if (ans) { D = min(D, ans); nth_element(a + 1, a + D, a + ans + 1, greater<int>()); ans += accumulate(a + D + 1, a + ans + 1, 0); } cout << ans << '\n'; return 0; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...