제출 #1305982

#제출 시각아이디문제언어결과실행 시간메모리
1305982nasjesBinaria (CCO23_day1problem1)C++20
14 / 25
170 ms39576 KiB
#include <iostream> #include <iomanip> #include <vector> #include <cmath> #include <algorithm> #include <set> #include <queue> #include <map> #include <stack> #include <bitset> #include <string> #include <cstring> #include <iterator> #include <random> #include <unordered_map> using namespace std; typedef long long ll; typedef pair<ll,ll> pll; typedef long double ld; const ll dim=1e6 + 10; const ll mod=998244353; const ll inf=1e18+77; #define endl "\n" #define fi first #define pb push_back #define se second #define vll vector<ll> ll n,t, k; ll a[dim]; vector<pll> subs; ll same[dim]; ll fc[dim], ufc[dim]; ll binpow(ll a, ll p){ ll r=1; while(p>0){ if(p&1){ p--; r*=a; r=r%mod; } a=(a*a)%mod; p/=2; } return r%mod; } ll cnt(ll k, ll n){ ll zn=(ufc[k]*ufc[n-k])%mod; ll ch=fc[n]; ch=(ch*zn)%mod; return ch; } ll f[dim]; ll b[dim]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //cin>>t; fc[0]=1; ufc[0]=1; for(int i=1; i<=1e6; i++){ fc[i]=fc[i-1]*i; fc[i]=(fc[i]%mod); ufc[i]=binpow(fc[i], mod-2); } t=1; while(t--){ cin>>n>>k; for(int i=1; i<=n-k+1; i++){ cin>>a[i]; } for(int i=1; i<=n; i++)b[i]=-1; ll fl=1; for(int i=2; i<=n-k+1; i++){ if(a[i]==a[i-1]){ same[i+k-1]=0; } else if(a[i]==a[i-1]-1){ same[i+k-1]=-1; } else if(a[i]==a[i-1]+1){ same[i+k-1]=1; } else{ fl=0; } } for(int i=1; i<=k; i++){ f[i]=1; } for(int i=k+1; i<=n; i++){ if(same[i]==same[i-k] && same[i]!=0){ fl=0; } if(same[i]!=same[i-k]){ if(same[i]>same[i-k])b[i]=1; else b[i]=0; for(int j=i-k; j>=1 && b[j]==-1; j-=k){ b[j]=b[j+k]-same[j+k]; } } } ll c=0; for(int i=1; i<=k; i++){ if(b[i]==1)a[1]--; if(b[i]==-1)c++; } if(!fl || a[1]<0){ cout<<0<<endl; } else{ cout<<cnt(a[1], c)<<endl; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...