QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#376342 | #6823. Coffee Overdose | fzx | WA | 59ms | 3636kb | C++14 | 1.4kb | 2024-04-04 08:15:46 | 2024-04-04 08:15:46 |
Judging History
answer
#include <bits/stdc++.h>
#define int long long
using namespace std;
int s,c,ans;
int check(int x) {
int res=0;
res+=(2*s-x+2)*(x-1)/2;
res+=c*(s-x+1)*((s-x+1)/(c+1)+1);
res-=(0+(s-x+1)/(c+1))*((s-x+1)/(c+1)+1)/2*(c+1)*c;
ans=max(ans,res);
return res;
}
void print(int l,int r) {
for (int i=l;i<=r;i++)
cout<<check(i)<<" "<<(s-i+1)/(c+1)<<" ";
cout<<"\n";
}
void solve() {
// (s-x+1)/(c+1)
cin>>s>>c;ans=0;
int l=max(1ll,s-c*(c+1)/2+1),r=min((s+1)%(c+1)+max(1ll,s-c*(c+1)/2+1),min(s,max(1ll,s-c*(c+1)/2+1)+c));
// print(l,r);
while (l<=r) {
int Mid=(l+r)>>1;
if (check(Mid)<check(Mid+1)) l=Mid+1;
else r=Mid-1;
}
l=min((s+1)%(c+1)+max(1ll,s-c*(c+1)/2+1),min(s,max(1ll,s-c*(c+1)/2+1)+c))+1,r=min(s,max(1ll,s-c*(c+1)/2+1)+c);
while (l<=r) {
int Mid=(l+r)>>1;
if (check(Mid)<check(Mid+1)) l=Mid+1;
else r=Mid-1;
}
// int ans=0;
// for (int x=max(1ll,s-c*(c+1)/2+1);x<=min(s,max(1ll,s-c*(c+1)/2+1)+c);x++) {
// int res=0;
// res+=(2*s-x+2)*(x-1)/2;
// res+=c*(s-x+1)*((s-x+1)/(c+1)+1);
// res-=(0+(s-x+1)/(c+1))*((s-x+1)/(c+1)+1)/2*(c+1)*c;
// ans=max(ans,res);
// }
cout<<ans<<"\n";
}
signed main()
{
ios::sync_with_stdio(false);
int t=0;cin>>t;
while (t--) solve();
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3636kb
input:
4 1 2 2 1 10 4 172800 172800
output:
2 3 63 29859840000
result:
ok 4 tokens
Test #2:
score: -100
Wrong Answer
time: 59ms
memory: 3560kb
input:
100000 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 60 1 ...
output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 ...
result:
wrong answer 2504th words differ - expected: '28', found: '27'