제출 #1224345

#제출 시각아이디문제언어결과실행 시간메모리
1224345SpyrosAlivA Difficult(y) Choice (BOI21_books)C++20
0 / 100
0 ms1196 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; #define ll long long int n, k, s; ll a; void solve(int N, int K, ll A, int S) { n = N; k = K; a = A; s = S; vector<ll> arr(n+1); for (int i = 1; i <= n; i++) { arr[i] = skim(arr[i]); } ll currS = 0; vector<int> index(k+2); for (int i = 1; i <= k; i++) { currS += arr[i]; index[i] = i; } index[k+1] = n+1; for (int curr = k; curr >= 1; curr--) { if (currS >= a && currS <= 2*a) break; int allow = index[curr+1] - 1; if (allow == curr) continue; currS -= arr[curr]; for (int j = curr+1; j <= allow; j++) { currS += arr[j]; index[curr] = j; if (currS >= a && currS <= 2*a) { vector<int> fin; for (int i = 1; i <= k; i++) { fin.push_back(index[i]); } answer(fin); return; } else if (currS < a) { if (j == allow) break; currS -= arr[j]; continue; } else if (currS > 2*a) { currS -= arr[j]; index[curr] = j-1; currS += arr[j-1]; break; } } } if (currS > 2 * a || currS < a) { impossible(); return; } else { vector<int> fin; for (int i = 1; i <= k; i++) { fin.push_back(index[i]); } answer(fin); return; } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...