QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#139666 | #6130. Plants vs. Zombies | sihan_88 | WA | 81ms | 3760kb | C++14 | 675b | 2023-08-14 09:53:55 | 2023-08-14 09:53:57 |
Judging History
answer
#include<cstdio>
typedef long long ll;
const int N=200010;
int a[N],n;
ll b[N],m;
inline bool check(ll x)
{
for(int i=1;i<=n;++i) b[i]=(x+a[i]-1)/a[i];
ll sum=0;
for(int i=1;i<=n;++i)
{
if(!b[i]) sum+=i<n;
else if(b[i]<=b[i+1]) sum+=b[i]*2-1,b[i+1]-=b[i]-1;
else b[i+1]=0,sum+=b[i]*2-1;
if(sum>m) return false;
}
return sum<=m;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%lld",&n,&m);
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
if(!check(1)){puts("0");continue;}
ll l=1,r=m;
while(l<r)
{
ll mid=(l+r+1)>>1;
if(check(mid)) l=mid;
else r=mid-1;
}
printf("%lld\n",l);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 1552kb
input:
2 4 8 3 2 6 6 3 9 10 10 1
output:
6 4
result:
ok 2 number(s): "6 4"
Test #2:
score: -100
Wrong Answer
time: 81ms
memory: 3760kb
input:
116 4 0 3 2 6 6 4 1 3 2 6 6 10 19 10 2 8 4 2 4 9 3 3 3 4 8 3 9 3 6 2 19 2 10 11 15 3 1 1 4 3 7 10 8 6 7 10 10 14 8 7 1 1 10 9 2 8 10 7 2 13 2 3 10 10 8 1 6 6 9 4 7 1 8 8 7 14 6 7 4 5 3 1 3 11 6 8 1 10 9 7 2 6 6 1 3 9 4 10 6 1 3 8 7 7 10 6 2 10 4 7 2 5 11 9 10 5 9 2 9 1 2 4 8 6 2 8 8 1 6 4 5 7 2 9 8 ...
output:
0 0 4 6 19 3 2 13 1 4 0 4 2 6 0 2 7 3 18 10 0 2 3 0 0 2 6 0 1 6 17 14 1 4 3 0 4 9 6 4 1 3 0 2 0 4 18 2 0 0 12 8 0 16 2 11 4 2 0 0 2 0 2 0 5 2 0 0 0 0 5 0 4 5 14 0 0 18 3 0 2 4 0 0 4 4 6 1 0 5 14 3 8 0 4 0 10 12 5 8 1 6 7 0 725 0 17 132 676 426 110 0 163 5910826 1000000000000 16561021906
result:
wrong answer 5th numbers differ - expected: '20', found: '19'