Submission #1151978

#TimeUsernameProblemLanguageResultExecution timeMemory
1151978_rain_Binaria (CCO23_day1problem1)C++17
0 / 25
33 ms55112 KiB
#include<bits/stdc++.h> using namespace std; typedef long long LL; #define FOR(i,a,b) for(int i=(a);i<=(b);++i) #define FORD(i,a,b) for(int i=(b);i>=(a);--i) const int N=(int)1e6; vector<int>ke[N+2],comp[N+2]; int a[N+2],id[N+2],cc[N+2]; int n,k; const int MOD=(int)1e6+3; int add(int a,int b){ return a+b>=MOD?a+b-MOD:a+b; } int sub(int a,int b){ return a-b<0?a-b+MOD:a-b; } int mul(int a,int b){ return (LL)a*b%MOD; } int power(int a,int b){ int res=1; for(;b;b>>=1,a=mul(a,a)) if (b&1) res=mul(res,a); return res; } int fac[N+2],inv[N+2]; void build(){ fac[0]=1; FOR(i,1,N) fac[i]=mul(fac[i-1],i); inv[N]=power(fac[N],MOD-2); FORD(i,1,N) inv[i-1]=mul(inv[i],i); return; } int C(int x,int y){ if (x>y) return 0; return (LL)fac[y]*inv[y-x]*inv[x]%MOD; } int main(){ ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); cin>>n>>k; build(); int size=n-k+1; FOR(i,k,n) cin>>a[i]; FOR(i,1,n) id[i]=i,cc[i]=-1; FOR(i,1,k) comp[i].push_back(i); FOR(i,k+1,n) { int previd=i-k; if (a[i]==a[i-1]) { if (cc[id[previd]]!=-1) cc[i]=cc[id[previd]]; else comp[id[previd]].push_back(i); id[i]=id[previd]; } if (a[i]==a[i-1]+1){ assert(cc[id[previd]]!=1); for(auto&x:comp[id[previd]]) cc[x]=0; comp[id[previd]].clear(); cout<<i<<'\n'; cc[i]=1; } if (a[i]==a[i-1]-1){ assert(cc[id[previd]]!=0); for(auto&x:comp[id[previd]]) cc[x]=1; comp[id[previd]].clear(); cc[i]=0; } } int cnt=0; FOR(i,1,k) if (cc[i]!=-1) a[k]-=cc[i]; else ++cnt; cout<<C(a[k],cnt); exit(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...