Submission #697788

#TimeUsernameProblemLanguageResultExecution timeMemory
697788Sandarach151A Difficult(y) Choice (BOI21_books)C++17
5 / 100
229 ms976 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; // // --- Sample implementation for the task books --- // // To compile this program with the sample grader, place: // books.h books_sample.cpp sample_grader.cpp // in a single folder and run: // g++ books_sample.cpp sample_grader.cpp // in this folder. // void solve(int n, int k, long long a, int s) { long long arr[n]; vector<int> ans; for(int i=0; i<n; i++){ arr[i] = skim(i+1); } long long cur = 0; for(int i=0; i<k-2; i++){ cur+=arr[i]; ans.push_back(i+1); } int pos1 = k-2; int pos2 = n-1; while((arr[pos1]+arr[pos2]+cur)<a || 2*a<(arr[pos1]+arr[pos2]+cur)){ if((cur+arr[pos1]+arr[pos2])<a){ pos1++; } else{ pos2--; } if(pos1>=pos2){ break; } } if(pos1<pos2 && (arr[pos1]+arr[pos2]+cur)>=a && 2*a>=(arr[pos1]+arr[pos2]+cur)){ ans.push_back(pos1+1); ans.push_back(pos2+1); answer(ans); return; } vector<int> ans2; long long cur2 = 0; for(int i=n-k+2; i<n; i++){ cur2+=arr[i]; ans2.push_back(i+1); } pos1 = 0; pos2 = n-k+1; while((arr[pos1]+arr[pos2]+cur2)<a || 2*a<(arr[pos1]+arr[pos2]+cur2)){ if((cur2+arr[pos1]+arr[pos2])<a){ pos1++; } else{ pos2--; } if(pos1>=pos2){ break; } } if(pos1<pos2 && (arr[pos1]+arr[pos2]+cur2)>=a && 2*a>=(arr[pos1]+arr[pos2]+cur2)){ ans2.insert(ans2.begin(), pos2+1); ans2.insert(ans2.begin(), pos1+1); answer(ans2); return; } impossible(); 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...