제출 #901063

#제출 시각아이디문제언어결과실행 시간메모리
901063simona1230A Difficult(y) Choice (BOI21_books)C++17
5 / 100
1 ms700 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; long long n,k,a,s; long long x[120001]; long long val(int idx) { if(x[idx]==0)x[idx]=skim(idx); return x[idx]; } void solve(int N,int K,long long A,int S) { n=N; k=K; a=A; s=S; int lidx=k,ridx=n,idx=0; while(lidx<=ridx) { int m=(lidx+ridx)/2; if(val(m)>=a) { idx=m; ridx=m-1; } else lidx=m+1; } if(idx>=k) { long long fk=0; for(int i=1; i<k; i++) fk+=val(i); if(fk+val(idx)>=a&&fk+val(idx)<=2*a) { vector<int> ans; for(int i=1; i<k; i++) ans.push_back(i); ans.push_back(idx); answer(ans); return; } if(idx==k) { impossible(); return; } } if(idx==0)idx=n+1; long long sum=0; for(int i=1;i<=k;i++) sum+=val(i); int lf=k,rt=idx-1; while(lf>=1&&rt>=1&&sum<a) { sum-=val(lf);lf--; sum+=val(rt);rt--; if(sum>=a&&sum<=2*a) { vector<int> ans; //cout<<sum<<" "<<lf<<" "<<rt<<endl; for(int i=1;i<=lf;i++) ans.push_back(i); for(int i=rt+1;i<idx;i++) ans.push_back(i); answer(ans); return; } } impossible(); } /* 10 4 20 11 1 2 3 4 5 15 16 17 18 19 */
#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...