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
AC × 7
AC × 47
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