提出 #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
結果
AC × 3
AC × 27
セット名 テストケース
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