比赛 20170919普及组 评测结果 AAAAAAAAAA
题目名称 划分数列 最终得分 100
用户昵称 Hyoi_0Koto 运行时间 0.005 s
代码语言 C++ 内存使用 0.13 MiB
提交时间 2017-09-19 18:36:34
显示代码纯文本
  1. /*written by 0koto*/
  2. #prag\
  3. ma GCC optimize("O3")
  4. #include<cstdio>
  5. #include<cctype>
  6. #define loop(i,j,k) for(int i=j;i<=k;++i)
  7. using namespace std;
  8. inline void in(int &x){
  9. x=0;int f=1;char c=getchar();
  10. while(!isdigit(c)){if(!(c-'-'))f=-1;c=getchar();}
  11. while (isdigit(c))x=(x<<3)+(x<<1)+(c^48),c=getchar();
  12. x*=f;
  13. }
  14. inline void out(int x){
  15. if(!x){putchar('0');return;}
  16. if(x<0)x=~x+1,putchar('-');
  17. char c[30]={0};
  18. while(x)c[++c[0]]=x%10+48,x/=10;
  19. while(c[0])putchar(c[c[0]--]);
  20. }
  21. const int maxn=100001;
  22. int n,k,a[maxn],l=1,r=0;
  23. inline int check(int num){
  24. int sum=0,cnt=1;
  25. loop(i,1,n){
  26. sum+=a[i];
  27. if(sum>num) sum=a[i],cnt++;
  28. }
  29. if(cnt>k) return 0;else return 1;
  30. }
  31. inline int divans(int l,int r){
  32. if(!(l-r)) return l;
  33. int mid=(l+r)>>1;
  34. if(check(mid)) divans(l,mid);
  35. else divans(mid+1,r);
  36. }
  37. inline int koto(){
  38. freopen("seqa.in","r",stdin);
  39. freopen("seqa.out","w",stdout);
  40. in(n);in(k);
  41. loop(i,1,n) in(a[i]),r+=a[i];
  42. out(divans(l,r));
  43. }
  44. int zero=koto();
  45. int main(){;}
  46.