Submission #45023731
Source Code Expand
#include<bits/stdc++.h>
#include<atcoder/all>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define op(x) ((x&1)?x+1:x-1)
#define odd(x) (x&1)
#define even(x) (!odd(x))
#define lc(x) (x<<1)
#define rc(x) (lc(x)|1)
#define lowbit(x) (x&-x)
#define mp(x,y) make_pair(x,y)
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
using namespace std;
using namespace atcoder;
const int MAXN = 2e5+10,LIM = 4e5+5;
using mint = modint998244353;
typedef vector<mint> Poly;
int n,p,a[MAXN],pre[MAXN];
string s;
mint f[MAXN],g[MAXN],ans;
mint fac[MAXN*2],rfac[MAXN*2];
int main(){
cin>>s;n = s.length();
rep(i,1,n)a[i] = s[i-1] - '0';
for(p=1;p<n && a[p] <= a[p+1];p++);
fac[0] = 1;rep(i,1,LIM)fac[i] = fac[i-1] * i;
rep(i,0,LIM)rfac[i] = fac[i].inv();
pre[p] = 100;rep(i,p+1,n)pre[i] = min(pre[i-1],a[i]);
if(pre[n] <= a[1]){cout<<"0\n";exit(0);}
f[n] = 1;
for(int l=1,r,len,q=n;l<=p;l=r+1){
for(r=l,len=1;r<p&&a[r+1]==a[l];r++,len++);
rep(i,l,r-1)ans += f[i];
for(int i=r,mn=100,cnt=0;i<=n && mn>a[l];i++,mn=min(mn,a[i]),cnt++){
mint C = fac[cnt+len-1] * rfac[len-1] * rfac[cnt];
ans += f[i] * C;
}
//
while(q>=p && pre[q] <= a[l])q--;
Poly A(n+1,0),B(n+1,0);
rep(i,r+1,q)A[i] = f[i];
rep(i,0,n)B[n-i] = fac[i+len-1] * rfac[i];
A = convolution(A,B);
rep(i,r+1,q)f[i] = A[n+i] * rfac[len-1];
}
cout<<ans.val()<<endl;
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - Deque Minimization |
| User | Crying |
| Language | C++ (GCC 9.2.1) |
| Score | 800 |
| Code Size | 1499 Byte |
| Status | AC |
| Exec Time | 324 ms |
| Memory | 16856 KB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 800 / 800 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 01_sample_01.txt, 01_sample_02.txt, 01_sample_03.txt |
| All | 01_sample_01.txt, 01_sample_02.txt, 01_sample_03.txt, 02_small_rand_1_01.txt, 02_small_rand_1_02.txt, 02_small_rand_1_03.txt, 02_small_rand_1_04.txt, 02_small_rand_1_05.txt, 02_small_rand_1_06.txt, 02_small_rand_1_07.txt, 02_small_rand_1_08.txt, 02_small_rand_1_09.txt, 02_small_rand_1_10.txt, 03_small_rand_2_01.txt, 03_small_rand_2_02.txt, 03_small_rand_2_03.txt, 03_small_rand_2_04.txt, 03_small_rand_2_05.txt, 03_small_rand_2_06.txt, 03_small_rand_2_07.txt, 03_small_rand_2_08.txt, 03_small_rand_2_09.txt, 03_small_rand_2_10.txt, 04_max_rand_1_01.txt, 04_max_rand_1_02.txt, 04_max_rand_1_03.txt, 04_max_rand_1_04.txt, 04_max_rand_1_05.txt, 05_max_rand_2_01.txt, 05_max_rand_2_02.txt, 05_max_rand_2_03.txt, 05_max_rand_2_04.txt, 05_max_rand_2_05.txt, 05_max_rand_2_06.txt, 05_max_rand_2_07.txt, 05_max_rand_2_08.txt, 05_max_rand_2_09.txt, 05_max_rand_2_10.txt, 05_max_rand_2_11.txt, 05_max_rand_2_12.txt, 05_max_rand_2_13.txt, 05_max_rand_2_14.txt, 05_max_rand_2_15.txt, 05_max_rand_2_16.txt, 05_max_rand_2_17.txt, 05_max_rand_2_18.txt, 06_max_rand_3_01.txt, 06_max_rand_3_02.txt, 06_max_rand_3_03.txt, 06_max_rand_3_04.txt, 06_max_rand_3_05.txt, 06_max_rand_3_06.txt, 06_max_rand_3_07.txt, 06_max_rand_3_08.txt, 06_max_rand_3_09.txt, 06_max_rand_3_10.txt, 06_max_rand_3_11.txt, 06_max_rand_3_12.txt, 06_max_rand_3_13.txt, 06_max_rand_3_14.txt, 07_no_suffix_01.txt, 07_no_suffix_02.txt, 07_no_suffix_03.txt, 07_no_suffix_04.txt, 07_no_suffix_05.txt, 08_worst_01.txt, 08_worst_02.txt, 08_worst_03.txt, 08_worst_04.txt, 08_worst_05.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 01_sample_01.txt | AC | 57 ms | 8244 KB |
| 01_sample_02.txt | AC | 52 ms | 8220 KB |
| 01_sample_03.txt | AC | 54 ms | 8316 KB |
| 02_small_rand_1_01.txt | AC | 50 ms | 8284 KB |
| 02_small_rand_1_02.txt | AC | 49 ms | 8188 KB |
| 02_small_rand_1_03.txt | AC | 49 ms | 8224 KB |
| 02_small_rand_1_04.txt | AC | 53 ms | 8312 KB |
| 02_small_rand_1_05.txt | AC | 52 ms | 8204 KB |
| 02_small_rand_1_06.txt | AC | 53 ms | 8188 KB |
| 02_small_rand_1_07.txt | AC | 51 ms | 8204 KB |
| 02_small_rand_1_08.txt | AC | 52 ms | 8184 KB |
| 02_small_rand_1_09.txt | AC | 52 ms | 8184 KB |
| 02_small_rand_1_10.txt | AC | 49 ms | 8228 KB |
| 03_small_rand_2_01.txt | AC | 51 ms | 8208 KB |
| 03_small_rand_2_02.txt | AC | 51 ms | 8220 KB |
| 03_small_rand_2_03.txt | AC | 50 ms | 8184 KB |
| 03_small_rand_2_04.txt | AC | 50 ms | 8248 KB |
| 03_small_rand_2_05.txt | AC | 53 ms | 8228 KB |
| 03_small_rand_2_06.txt | AC | 52 ms | 8204 KB |
| 03_small_rand_2_07.txt | AC | 50 ms | 8224 KB |
| 03_small_rand_2_08.txt | AC | 53 ms | 8224 KB |
| 03_small_rand_2_09.txt | AC | 50 ms | 8188 KB |
| 03_small_rand_2_10.txt | AC | 55 ms | 8248 KB |
| 04_max_rand_1_01.txt | AC | 58 ms | 9900 KB |
| 04_max_rand_1_02.txt | AC | 55 ms | 9884 KB |
| 04_max_rand_1_03.txt | AC | 59 ms | 9888 KB |
| 04_max_rand_1_04.txt | AC | 58 ms | 9812 KB |
| 04_max_rand_1_05.txt | AC | 55 ms | 9900 KB |
| 05_max_rand_2_01.txt | AC | 91 ms | 15308 KB |
| 05_max_rand_2_02.txt | AC | 114 ms | 15920 KB |
| 05_max_rand_2_03.txt | AC | 143 ms | 16512 KB |
| 05_max_rand_2_04.txt | AC | 145 ms | 16544 KB |
| 05_max_rand_2_05.txt | AC | 147 ms | 16656 KB |
| 05_max_rand_2_06.txt | AC | 144 ms | 16672 KB |
| 05_max_rand_2_07.txt | AC | 146 ms | 16580 KB |
| 05_max_rand_2_08.txt | AC | 146 ms | 16556 KB |
| 05_max_rand_2_09.txt | AC | 200 ms | 16628 KB |
| 05_max_rand_2_10.txt | AC | 143 ms | 16784 KB |
| 05_max_rand_2_11.txt | AC | 145 ms | 16620 KB |
| 05_max_rand_2_12.txt | AC | 145 ms | 16616 KB |
| 05_max_rand_2_13.txt | AC | 172 ms | 16640 KB |
| 05_max_rand_2_14.txt | AC | 174 ms | 16612 KB |
| 05_max_rand_2_15.txt | AC | 146 ms | 16672 KB |
| 05_max_rand_2_16.txt | AC | 143 ms | 16564 KB |
| 05_max_rand_2_17.txt | AC | 173 ms | 16616 KB |
| 05_max_rand_2_18.txt | AC | 173 ms | 16564 KB |
| 06_max_rand_3_01.txt | AC | 144 ms | 16156 KB |
| 06_max_rand_3_02.txt | AC | 146 ms | 16500 KB |
| 06_max_rand_3_03.txt | AC | 171 ms | 16148 KB |
| 06_max_rand_3_04.txt | AC | 174 ms | 16464 KB |
| 06_max_rand_3_05.txt | AC | 204 ms | 16260 KB |
| 06_max_rand_3_06.txt | AC | 202 ms | 16224 KB |
| 06_max_rand_3_07.txt | AC | 233 ms | 16336 KB |
| 06_max_rand_3_08.txt | AC | 232 ms | 16380 KB |
| 06_max_rand_3_09.txt | AC | 261 ms | 16260 KB |
| 06_max_rand_3_10.txt | AC | 259 ms | 16140 KB |
| 06_max_rand_3_11.txt | AC | 291 ms | 16376 KB |
| 06_max_rand_3_12.txt | AC | 287 ms | 16188 KB |
| 06_max_rand_3_13.txt | AC | 319 ms | 16260 KB |
| 06_max_rand_3_14.txt | AC | 318 ms | 16564 KB |
| 07_no_suffix_01.txt | AC | 142 ms | 15952 KB |
| 07_no_suffix_02.txt | AC | 171 ms | 15992 KB |
| 07_no_suffix_03.txt | AC | 204 ms | 15932 KB |
| 07_no_suffix_04.txt | AC | 318 ms | 15976 KB |
| 07_no_suffix_05.txt | AC | 321 ms | 15936 KB |
| 08_worst_01.txt | AC | 324 ms | 16716 KB |
| 08_worst_02.txt | AC | 323 ms | 16856 KB |
| 08_worst_03.txt | AC | 320 ms | 16720 KB |
| 08_worst_04.txt | AC | 321 ms | 16692 KB |
| 08_worst_05.txt | AC | 321 ms | 16800 KB |