Submission #943115

#TimeUsernameProblemLanguageResultExecution timeMemory
943115hmm789A Difficult(y) Choice (BOI21_books)C++14
60 / 100
2 ms1364 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; void solve(int N, int K, long long A, int S) { vector<int> v; #define int long long int l = 1, r = N-K+1, m; int a[N+1]; memset(a, -1, sizeof(a)); while(l < r) { m = (l+r)/2; int sm = 0; for(int i = 0; i < K; i++) { if(a[m+i] == -1) a[m+i] = skim(m+i); sm += a[m+i]; } if(sm < A) l = m+1; else r = m; } int sm = 0; for(int i = 0; i < K; i++) { if(a[l+i] == -1) a[l+i] = skim(l+i); sm += a[l+i]; } if(sm >= A && sm <= 2*A) { for(int i = 0; i < K; i++) v.push_back(l+i); answer(v); } else if(sm >= A) { sm = 0; for(int i = 1; i < K; i++) { if(a[i] == -1) a[i] = skim(i); sm += a[i]; v.push_back(i); } if(a[l+K-1] == -1) a[l+K-1] = skim(l+K-1); sm += a[l+K-1]; v.push_back(l+K-1); if(sm <= 2*A) answer(v); else impossible(); } else impossible(); #undef int }
#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...