QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#478220#8049. Equal Sums11d10xyTL 1ms3972kbC++14895b2024-07-14 19:01:132024-07-14 19:01:13

Judging History

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

  • [2024-07-14 19:01:13]
  • 评测
  • 测评结果:TL
  • 用时:1ms
  • 内存:3972kb
  • [2024-07-14 19:01:13]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
using i64=long long;
constexpr i64 mod=998244353;
constexpr int M=505;
int n,m,Lx[510],Rx[510],Ly[510],Ry[510];
int f[510][510][1010];
int main(){
   cin>>n>>m;
   for(int i=1;i<=n;i++)scanf("%d%d",&Lx[i],&Rx[i]);
   for(int i=1;i<=m;i++)scanf("%d%d",&Ly[i],&Ry[i]);
   f[0][0][M]=1;
   for(int i=0;i<=n;i++)for(int j=0;j<=n;j++){
      i64 s=0;
      auto at=[&](int x,int l,int r){
         return l<=x&&x<=r?f[i][j][x]:0;
      };
      for(int a=0;a<=10009;a++){
         s=(s+at(a-Lx[i+1],0,M-1)+mod-at(a-Rx[i+1]-1,0,M-1))%mod;
         (f[i+1][j][a]+=s)%=mod;
      }s=0;
      for(int a=1009;a>=0;a--){
         s=(s+at(a+Ly[j+1],M,1009)+mod-at(a+Ry[j+1]+1,M,1009))%mod;
         (f[i][j+1][a]+=s)%=mod;
      }
   }
   for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)printf("%d%c",f[i][j][M]," \n"[j==m]);
   return 0;
}

詳細信息

Test #1:

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

input:

2 3
1 2
2 3
1 4
2 2
1 3

output:

2 0 0
3 4 4

result:

ok 6 numbers

Test #2:

score: -100
Time Limit Exceeded

input:

500 500
19 458
1 480
7 485
50 461
12 476
15 461
48 466
40 453
46 467
9 458
27 478
26 472
46 459
29 490
6 500
17 487
48 484
28 472
28 459
25 480
4 491
29 481
36 460
2 491
44 499
22 473
20 458
4 483
27 471
2 496
11 461
43 450
2 478
37 466
15 459
42 482
7 451
19 455
2 453
47 475
48 450
1 474
46 471
9 4...

output:


result: