Submission #550098

#TimeUsernameProblemLanguageResultExecution timeMemory
550098ToroTNA Difficult(y) Choice (BOI21_books)C++14
100 / 100
2 ms288 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; int n,m,st,md,ed,l,r; long long num,a,qs[100005],x; vector<pair<long long,int> > v; vector<int> ans; long long query(int l,int r) { if(l==0)return qs[r]; return qs[r]-qs[l-1]; } void solve(int N, int K, long long A, int S) { n=N; m=K; a=A; st=1; ed=n; while(ed>=st) { md=(st+ed)/2; num=skim(md); if(num>=A) { ed=md-1; }else { st=md+1; } } for(int i=1;i<=min(m,n);i++) { v.push_back({skim(i),i}); } for(int i=st-m;i<=st;i++) { if(i>m&&i<=n) { v.push_back({skim(i),i}); } } qs[0]=v[0].first; for(int i=1;i<v.size();i++) { qs[i]=qs[i-1]+v[i].first; } for(int i=0;i<=v.size()-m;i++) { x=query(i,i+m-1); if(x>=a&&x<=2*a) { for(int j=i;j<=i+m-1;j++) { ans.push_back(v[j].second); } answer(ans); } } for(int i=1;i<m;i++) { l=i-1; r=v.size()-m+i; if(l<r) { if(query(0,l)+query(r,v.size()-1)>=a&&query(0,l)+query(r,v.size()-1)<=2*a) { for(int j=0;j<=l;j++)ans.push_back(v[j].second); for(int j=r;j<v.size();j++)ans.push_back(v[j].second); answer(ans); } } } impossible(); }

Compilation message (stderr)

books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:43:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |     for(int i=1;i<v.size();i++)
      |                 ~^~~~~~~~~
books.cpp:47:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |     for(int i=0;i<=v.size()-m;i++)
      |                 ~^~~~~~~~~~~~
books.cpp:68:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |                 for(int j=r;j<v.size();j++)ans.push_back(v[j].second);
      |                             ~^~~~~~~~~
#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...