【51Nod】1128 正整数分组 V2 二分答案

来源:互联网 发布:windows正版多少钱 编辑:程序博客网 时间:2024/06/05 08:21

第一次做二分答案的题目呢

WA了四次很是纳闷

两次i打成x

两次long long没开全


难受



1128
正整数分组 V2
Accepted
2017/10/25
- [ 5次提交 ]
80
C++ 
31 ms
2180 KB
Accepted
2017/10/25
14:37:40
80
C++ 
15 ms
2180 KB
Wrong answer
2017/10/25
14:36:48
0
C++ 
15 ms
2180 KB
Wrong answer
2017/10/25
14:33:44
0
C++ 
1015 ms
2180 KB
Wrong answer
2017/10/25
14:32:00
0
C++ 
1015 ms
2180 KB
Wrong answer
2017/10/25
14:31:05
0


#include <cstdio>#define C (c=nc())using namespace std;int a[50005],n,k;long long sum;inline char nc(void){static char ch[100010],*p1=ch,*p2=ch;return p1==p2&&(p2=(p1=ch)+fread(ch,1,100010,stdin),p1==p2)?EOF:*p1++;}inline void read(int &n){static char c;int f=1;n=0;C;while (c<'0'||c>'9') c=='-'?f=-1,C:C;while (c>='0'&&c<='9') n=(n<<3)+(n<<1)+c-48,C;return (void)(n*=f);}bool pd(int x){long long sum=0,cnt=0;register int i;for (i=1;i<=n;++i){if (a[i]+sum>x) sum=a[i],++cnt; else sum+=a[i];}return cnt<k;}long long ef(int l,int r){if (l>=r) return l;long long mid=l+r>>1;return pd(mid)?ef(l,mid):ef(mid+1,r);}int main(void){freopen ("in.txt","r",stdin);read(n),read(k);register int i;for (i=1;i<=n;++i) read(a[i]),sum+=a[i];printf("%lld\n",ef(1,sum));return 0;}


原创粉丝点击