Submission #1214842

#TimeUsernameProblemLanguageResultExecution timeMemory
1214842biankBinaria (CCO23_day1problem1)C++20
25 / 25
57 ms12104 KiB
#include <bits/stdc++.h> using namespace std; #define forn(i,n) for(int i=0;i<int(n);i++) #define forsn(i,s,n) for(int i=int(s);i<int(n);i++) #define dforn(i,n) for(int i=int(n)-1;i>=0;i--) #define dforsn(i,s,n) for(int i=int(n)-1;i>=int(s);i--) #define fst first #define snd second #define pb push_back #define eb emplace_back #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() typedef long long ll; typedef vector<ll> vll; typedef vector<int> vi; typedef pair<int,int> ii; struct DSU{ vi p; DSU(int n):p(n,-1){} int find(int x){ if(p[x]<0) return x; return p[x]=find(p[x]); } bool unite(int x, int y){ x=find(x),y=find(y); if(x==y) return false; if(p[x]>p[y]) swap(x,y); p[x]+=p[y],p[y]=x; return true; } }; const int MOD=1e6+3; int mul(int a, int b){ return int(1LL*a*b%MOD); } int binpow(int a, int k){ int r=1; while(k){ if(k&1) r=mul(r,a); a=mul(a,a),k/=2; } return r; } int choose(int n, int k){ if(k<0||n<0||n-k<0) return 0; int ans=1,ans2=1; forn(i,k){ ans=mul(ans,n-i); ans2=mul(ans2,i+1); } return mul(ans,binpow(ans2,MOD-2)); } int main(){ ios::sync_with_stdio(0); cin.tie(0); int n,k; cin>>n>>k; vi s(n-k+1); forn(i,n-k+1) cin>>s[i]; vi x(n,-1); DSU dsu(n); forn(i,n-k){ int diff=s[i]-s[i+1]; if(diff==1) x[i]=1,x[i+k]=0; else if(diff==-1) x[i]=0,x[i+k]=1; else if(diff==0) dsu.unite(i,i+k); else assert(false); } forn(i,n){ int p=dsu.find(i); if(x[p]==-1) x[p]=x[i]; } forn(i,n){ int p=dsu.find(i); if(x[i]==-1) x[i]=x[p]; } int a=0,b=s[0]; forn(i,k){ if(x[i]==-1) a++; else if(x[i]==1) b--; } cout<<choose(a,b)<<'\n'; 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...