提出 #60982602
ソースコード 拡げる
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define rrep(i,a,b) for(int i=(int)(a);i<=(int)(b);i++)
#define all(v) v.begin(),v.end()
typedef long long ll;
typedef pair<int,int> pii;
#include <atcoder/convolution>
#include <atcoder/modint>
//using mint = atcoder::modint1000000007;
using mint = atcoder::modint998244353;
//.val()でintとして出力 llに注意
ll INF=3e18;
ll modpow(ll a,ll x,ll M){//a^x modM
ll r=1;
for (; x>0; x>>=1,a=a*a%M) if (x&1) r=r*a%M;
return r;
}
int N,K;
vector<mint>v[200009];
/*class SegmentTree{
public:
vector<mint> dat[800009];
int siz = 1;
void init(int N){
siz = 1 ;
while (siz < N) siz *=2;
for (int i=1; i<siz*2 ; i++) dat[i]={1};
for (int i = 1; i <N ; i++) dat[i]={1,i-1,1};
}
// uは現在のセル番号 ,[l,r)は求める半開区間,[a,b)はセルに対応した半開区間
vector<mint> solve(int l,int r,int a,int b,int u){
if(r <= a || b<=l) return {1};
if(l<=a && b <= r) return dat[u];
int m =(a+b)/2;
vector<mint> AnswerL = solve(l,r,a,m,u*2);
vector<mint> AnswerR = solve(l,r,m,b,u*2+1);
return convolution(AnswerL,AnswerR);
}
};*/
vector<mint> solve(int a,int b){
if(a+1==b) return v[a];
if(a >= N-1 || b<=0) return {1};
int m =(a+b)/2;
vector<mint> AnswerL = solve(a,m);
vector<mint> AnswerR = solve(m,b);
return convolution(AnswerL,AnswerR);
}
int main(){
cin >> N >> K ;
K+=N-1;
rrep(i,1,N-1){v[i-1]={1,i-1,1};}
vector<mint> V=solve(0,N-1);
cout << V[K].val() << endl;
}
提出情報
| 提出日時 |
|
| 問題 |
G - Counting Buildings |
| ユーザ |
MARTH |
| 言語 |
C++ 20 (gcc 12.2) |
| 得点 |
600 |
| コード長 |
1720 Byte |
| 結果 |
AC |
| 実行時間 |
273 ms |
| メモリ |
23348 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
600 / 600 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt |
| All |
00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_01.txt |
AC |
2 ms |
3488 KiB |
| 00_sample_02.txt |
AC |
2 ms |
3488 KiB |
| 00_sample_03.txt |
AC |
3 ms |
3684 KiB |
| 01_random_01.txt |
AC |
64 ms |
9012 KiB |
| 01_random_02.txt |
AC |
272 ms |
23244 KiB |
| 01_random_03.txt |
AC |
263 ms |
22088 KiB |
| 01_random_04.txt |
AC |
271 ms |
23240 KiB |
| 01_random_05.txt |
AC |
246 ms |
19592 KiB |
| 01_random_06.txt |
AC |
271 ms |
23216 KiB |
| 01_random_07.txt |
AC |
57 ms |
8124 KiB |
| 01_random_08.txt |
AC |
271 ms |
23288 KiB |
| 01_random_09.txt |
AC |
256 ms |
21368 KiB |
| 01_random_10.txt |
AC |
272 ms |
23276 KiB |
| 01_random_11.txt |
AC |
126 ms |
13472 KiB |
| 01_random_12.txt |
AC |
273 ms |
23228 KiB |
| 01_random_13.txt |
AC |
124 ms |
13156 KiB |
| 01_random_14.txt |
AC |
272 ms |
23300 KiB |
| 01_random_15.txt |
AC |
146 ms |
15032 KiB |
| 01_random_16.txt |
AC |
273 ms |
23300 KiB |
| 01_random_17.txt |
AC |
248 ms |
20060 KiB |
| 01_random_18.txt |
AC |
271 ms |
23328 KiB |
| 01_random_19.txt |
AC |
120 ms |
12548 KiB |
| 01_random_20.txt |
AC |
271 ms |
23288 KiB |
| 01_random_21.txt |
AC |
121 ms |
12708 KiB |
| 01_random_22.txt |
AC |
272 ms |
23228 KiB |
| 01_random_23.txt |
AC |
125 ms |
13332 KiB |
| 01_random_24.txt |
AC |
272 ms |
23348 KiB |