Submission #8930524
Source Code Expand
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #define Mod 1000000007 using namespace std; int fpow(int a,int b) { int ans=1,t=a; while(b) { if(b&1)ans=(long long)ans*t%Mod; t=(long long)t*t%Mod; b>>=1; } return ans; } int lst[410]; int a[25010]; int f[25010][410],g[25010][410]; int F[25010],G[25010]; int main() { int n,k,m; scanf("%d %d %d",&n,&k,&m); int all=(n-m+1); for(int i=1;i<=n-m;i++) all=(long long)all*k%Mod; //check a for(int i=1;i<=m;i++)scanf("%d",&a[i]); for(int i=1;i<=k;i++)lst[i]=0; int l=0,r=m+1; for(int i=1;i<=m;i++) { l=max(l,lst[a[i]]+1); lst[a[i]]=i; if(i-l+1>=k){ printf("%d\n",all); return 0; } } for(int i=1;i<=k;i++)lst[i]=m+1; for(int i=m;i>=1;i--) { r=min(r,lst[a[i]]-1); lst[a[i]]=i; } if(l==1){ int val=1; for(int i=1;i<=m;i++) val=(long long)val*(k-i+1)%Mod; val=fpow(val,Mod-2); f[1][1]=k; if(m==1)g[1][1]=1; for(int i=2;i<=n;i++) { int sumf=0,sumg=0; //calc f&g for(int j=k-1;j>=1;j--) { sumf=(sumf+f[i-1][j])%Mod; sumg=(sumg+g[i-1][j])%Mod; f[i][j]=(sumf+(long long)f[i-1][j-1]*(k-j+1))%Mod; g[i][j]=(sumg+(long long)g[i-1][j-1]*(k-j+1))%Mod; } //f->g for(int j=m;j<k;j++) g[i][j]=(g[i][j]+(long long)f[i][j]*val)%Mod; } for(int i=1;i<k;i++) all=(all-g[n][i]+Mod)%Mod; printf("%d\n",all); } else{ f[0][m-l+1]=F[0]=1; g[0][r]=G[0]=1; for(int i=1;i<=n-m;i++) { int sumf=0,sumg=0; //calc f&g for(int j=k-1;j>=1;j--) { sumf=(sumf+f[i-1][j])%Mod; sumg=(sumg+g[i-1][j])%Mod; f[i][j]=(sumf+(long long)f[i-1][j-1]*(k-j+1))%Mod; g[i][j]=(sumg+(long long)g[i-1][j-1]*(k-j+1))%Mod; F[i]=(F[i]+f[i][j])%Mod; G[i]=(G[i]+g[i][j])%Mod; } } for(int i=0;i<=n-m;i++) all=(all-(long long)F[i]*G[n-m-i]%Mod+Mod)%Mod; printf("%d\n",all); } return 0; }
Submission Info
Submission Time | |
---|---|
Task | F - Colorful Sequences |
User | Pigbrain |
Language | C++14 (GCC 5.4.1) |
Score | 1100 |
Code Size | 1964 Byte |
Status | AC |
Exec Time | 137 ms |
Memory | 80512 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:25:28: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d %d %d",&n,&k,&m); ^ ./Main.cpp:30:40: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] for(int i=1;i<=m;i++)scanf("%d",&a[i]); ^
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1100 / 1100 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, sample_06.txt, sample_07.txt |
All | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, sample_06.txt, sample_07.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, sample_06.txt, sample_07.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 2 ms | 2304 KB |
sample_02.txt | AC | 1 ms | 256 KB |
sample_03.txt | AC | 2 ms | 2304 KB |
sample_04.txt | AC | 2 ms | 2304 KB |
sample_05.txt | AC | 1 ms | 256 KB |
sample_06.txt | AC | 119 ms | 80384 KB |
sample_07.txt | AC | 45 ms | 34944 KB |
subtask_1_01.txt | AC | 1 ms | 256 KB |
subtask_1_02.txt | AC | 2 ms | 2304 KB |
subtask_1_03.txt | AC | 2 ms | 2304 KB |
subtask_1_04.txt | AC | 1 ms | 256 KB |
subtask_1_05.txt | AC | 2 ms | 2432 KB |
subtask_1_06.txt | AC | 136 ms | 80384 KB |
subtask_1_07.txt | AC | 116 ms | 80384 KB |
subtask_1_08.txt | AC | 1 ms | 256 KB |
subtask_1_09.txt | AC | 137 ms | 80512 KB |
subtask_1_10.txt | AC | 19 ms | 14464 KB |
subtask_1_11.txt | AC | 9 ms | 16384 KB |
subtask_1_12.txt | AC | 1 ms | 256 KB |
subtask_1_13.txt | AC | 33 ms | 41088 KB |
subtask_1_14.txt | AC | 136 ms | 80256 KB |
subtask_1_15.txt | AC | 111 ms | 80384 KB |
subtask_1_16.txt | AC | 1 ms | 256 KB |
subtask_1_17.txt | AC | 135 ms | 80128 KB |
subtask_1_18.txt | AC | 109 ms | 67840 KB |
subtask_1_19.txt | AC | 1 ms | 256 KB |
subtask_1_20.txt | AC | 1 ms | 256 KB |
subtask_1_21.txt | AC | 44 ms | 51328 KB |
subtask_1_22.txt | AC | 124 ms | 76032 KB |
subtask_1_23.txt | AC | 1 ms | 256 KB |
subtask_1_24.txt | AC | 1 ms | 256 KB |
subtask_1_25.txt | AC | 135 ms | 80128 KB |
subtask_1_26.txt | AC | 35 ms | 22656 KB |
subtask_1_27.txt | AC | 1 ms | 256 KB |
subtask_1_28.txt | AC | 2 ms | 256 KB |
subtask_1_29.txt | AC | 135 ms | 80128 KB |
subtask_1_30.txt | AC | 4 ms | 2432 KB |
subtask_1_31.txt | AC | 1 ms | 256 KB |
subtask_1_32.txt | AC | 3 ms | 384 KB |
subtask_1_33.txt | AC | 135 ms | 80128 KB |