QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#264074#6823. Coffee Overdosevp_account#WA 81ms3888kbC++141.5kb2023-11-25 12:21:512023-11-25 12:21:51

Judging History

你现在查看的是最新测评结果

  • [2024-04-08 20:49:53]
  • hack成功,自动添加数据
  • (/hack/589)
  • [2023-11-25 12:21:51]
  • 评测
  • 测评结果:WA
  • 用时:81ms
  • 内存:3888kb
  • [2023-11-25 12:21:51]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
int s,c,ans,T;
int read(){
	int x=0,f=1;char ch=getchar();
	while (!isdigit(ch)) {if (ch=='-') f=-1;ch=getchar();}
	while (isdigit(ch)) x=x*10+ch-48,ch=getchar();
	return x*f;
}
int f(int x,int y){
	int mid=y+(x-1)*c; if (mid>s) return 0;
	return (s+mid+1)*(s-mid)+(c-1)*(y+mid)*x;
}
signed main(){
	T=read();while (T--){
		s=read();c=read()+1;ans=0;  
		/*for (int i=0;i<=(s-1)/c+1;i++)
			for (int j=1;j<=s;j++)
				ans=max(ans,f(i,j)); */
		const int limit=(s-1)/c+1; int head=c/2,tail=c/2;
		for (int i=max(limit-60,0ll);i<=limit;i++){
			const int x=f(i,c/2);int cur,last;
			head=min(head+100,c/2);tail=max(tail-100,c/2);
			last=f(i,head);ans=max(ans,last);
			while (head>1&&(cur=f(i,head-1))>=last) head--,last=cur,ans=max(ans,cur);
			last=f(i,tail);ans=max(ans,last);
			while (tail<s&&(cur=f(i,tail+1))>=last) tail++,last=cur,ans=max(ans,cur);
			for (int j=max(0ll,s-10);j<=s;j++) ans=max(ans,f(i,j));
		}
		head=tail=c/2;
		for (int i=0;i<=min(60ll,limit);i++){
			const int x=f(i,c/2);int cur,last;
			head=min(head+100,c/2);tail=max(tail-100,c/2);
			last=f(i,head);ans=max(ans,last);
			while (head>1&&(cur=f(i,head-1))>=last) head--,last=cur,ans=max(ans,cur);
			last=f(i,tail);ans=max(ans,last);
			while (tail<s&&(cur=f(i,tail+1))>=last) tail++,last=cur,ans=max(ans,cur);
			for (int j=max(0ll,s-10);j<=s;j++) ans=max(ans,f(i,j));
		}
		printf("%lld\n",ans/2);
	}
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 3812kb

input:

4
1 2
2 1
10 4
172800 172800

output:

2
3
63
29859840000

result:

ok 4 tokens

Test #2:

score: 0
Accepted
time: 36ms
memory: 3884kb

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:

ok 100000 tokens

Test #3:

score: -100
Wrong Answer
time: 81ms
memory: 3888kb

input:

100000
201 1
201 2
201 3
201 4
201 5
201 6
201 7
201 8
201 9
201 10
201 11
201 12
201 13
201 14
201 15
201 16
201 17
201 18
201 19
201 20
201 21
201 22
201 23
201 24
201 25
201 26
201 27
201 28
201 29
201 30
201 31
201 32
201 33
201 34
201 35
201 36
201 37
201 38
201 39
201 40
201 41
201 42
201 43
2...

output:

20301
20302
20304
20309
20316
20328
20343
20365
20391
20426
20466
20517
20574
20644
20721
20813
20913
21030
21156
21301
21435
21588
21735
21837
22001
22152
22248
22359
22533
22680
22785
22848
22974
23154
23310
23436
23532
23598
23634
23801
23985
24150
24295
24420
24525
24610
24675
24720
24745
24901
...

result:

wrong answer 53704th words differ - expected: '83844', found: '83744'