QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#830169 | #9916. Defeat the Enemies | CQXYM# | WA | 23ms | 3644kb | C++17 | 1.4kb | 2024-12-24 16:30:05 | 2024-12-24 16:30:06 |
Judging History
answer
#include<stdio.h>
#define L long long
#define P 9983244353
void Max(int&x,int y){
if(x<y){
x=y;
}
}
void Add(int&x,int y){
x+=y;
if(x>=P){
x-=P;
}
}
int c[101],g[20301],lf[20301],a[500000],b[500000];
L f[20301];
void Calc(int n,int k,int H,L&F,int&G){
//fprintf(stderr,"H%d\n",H);
for(int i=1;i<=H;i++){
lf[i]=0;
}
for(int i=0;i<n;i++){
Max(lf[H-b[i]],a[i]);
//printf("P%d %d\n",a[i],H-b[i]);
}
/*for(int i=1;i<=H;i++){
printf("%d ",lf[i]);
}
puts("");*/
for(int i=1;i<=H;i++){
//printf("L%d %d\n",i,lf[i-1]);
f[i]=1e17;
for(int j=1;j<=k&&j<=i-lf[i-1];j++){
if(f[i-j]+c[j]<f[i]){
f[i]=f[i-j]+c[j];
g[i]=g[i-j]%P;
}else if(f[i-j]+c[j]==f[i]){
Add(g[i],g[i-j]);
}
}
if(lf[i-1]>lf[i]){
lf[i]=lf[i-1];
}
//printf("I%d %d %d\n",i,f[i],g[i]);
}
if(f[H]<F){
F=f[H];
G=g[H];
}else if(f[H]==F){
Add(G,g[H]);
}
}
void Solve(){
int n,m,k,H=0;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
scanf("%d",a+i);
}
for(int i=0;i<n;i++){
scanf("%d",b+i);
}
for(int i=0;i<n;i++){
Max(H,a[i]+b[i]);
}
scanf("%d",&k);
for(int i=1;i<=k;i++){
scanf("%d",c+i);
}
L ansf=1e17;
int ansg;
for(int i=0;i<=k*2;i++){
Calc(n,k,H+i,ansf,ansg);
}
printf("%lld ",ansf);
printf("%d\n",ansg);
}
int main(){
g[0]=1;
int t;
scanf("%d",&t);
for(int i=0;i<t;i++){
Solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3644kb
input:
4 5 5 3 5 2 1 2 3 1 3 2 3 3 2 3 4 3 2 2 2 2 2 2 2 3 2 3 3 7 6 5 3 4 6 6 3 4 4 6 4 2 3 5 5 4 2 4 6 7 10 100 38 49 79 66 49 89 21 55 13 23 67 56 26 39 56 16 84 50 92 82 11 6 6 7 8 9 9 9 9 9 9 9
output:
9 1 6 4 18 18 99 44387
result:
ok 8 numbers
Test #2:
score: 0
Accepted
time: 1ms
memory: 3636kb
input:
1000 5 3 1 1 3 1 2 3 2 1 1 2 1 5 5 3 3 3 2 2 1 1 1 3 1 1 3 3 1 3 5 5 4 3 5 1 4 5 5 2 5 5 2 1 5 5 5 5 5 5 5 4 2 1 2 4 1 2 1 1 5 3 2 1 2 1 1 1 3 2 1 1 1 5 2 1 1 1 1 1 3 2 2 1 5 5 2 3 5 2 2 5 2 4 3 1 2 3 3 5 1 1 1 1 1 1 1 1 1 1 1 3 5 4 4 5 4 1 4 4 4 2 4 3 1 3 3 1 2 1 5 2 2 3 4 2 4 1 5 4 5 1 4 2 5 1 5 1...
output:
20 1 3 1 9 1 5 4 20 1 2 1 15 4 8 4 14 1 4 1 36 1 12 1 27 1 2 1 20 1 4 1 10 1 23 1 10 1 4 1 28 1 4 1 5 1 4 1 6 1 8 1 6 1 16 1 9 6 5 1 30 1 4 1 4 1 2 1 35 1 10 1 2 1 4 1 15 6 4 1 20 1 4 1 6 1 40 1 4 1 18 1 8 1 7 1 6 1 2 1 10 1 3 1 9 1 8 1 4 1 6 4 20 1 8 2 10 1 2 1 2 1 50 1 24 1 6 1 10 16 10 1 6 1 3 1 ...
result:
ok 2000 numbers
Test #3:
score: -100
Wrong Answer
time: 23ms
memory: 3608kb
input:
200 50 16 15 15 15 14 15 13 15 15 14 15 16 16 16 12 16 16 16 16 14 13 14 16 13 16 13 16 14 13 16 16 12 14 16 15 13 16 14 16 12 15 14 15 13 14 15 15 15 15 16 13 13 14 16 13 16 16 16 15 13 15 13 16 15 15 16 16 16 16 16 15 16 16 14 12 15 16 16 16 13 12 15 15 16 12 15 14 16 16 16 12 16 16 16 16 15 14 15...
output:
14 6889 68 33856 60 841 388 14400 20 214369 100 1 72 8281 6 256 39 30 4 1 58 1 12 144 4 144 116 169 46 38416 100 1 26 11025 88 36 80 1 10 81 114 100 92 1531055553 56 1 50 1296 400 -1912340480 68 1 32 9 6 1 1100 1 100 -598740071 46 1600 80 57 44 576 92 1 26 441 7 320 106 9 68 29241 34 324 29 7878 4 1...
result:
wrong answer 44th numbers differ - expected: '413318192', found: '1531055553'