Submission #545887

#TimeUsernameProblemLanguageResultExecution timeMemory
545887rainboyCalvinball championship (CEOI15_teams)C11
100 / 100
127 ms352 KiB
#include <stdio.h>

#define N	10000
#define MD	1000007

int main() {
	static int dp[N + 1];
	int n, k, k_, i, ans;

	scanf("%d", &n);
	k_ = 0;
	for (i = 0; i < n; i++) {
		int a;

		scanf("%d", &a);
		for (k = i + 1; k >= 0; k--)
			dp[k] = ((long long) dp[k] * k + (k == 0 ? 0 : dp[k - 1])) % MD;
		dp[k_] = (dp[k_] + a - 1) % MD;
		if (a == k_ + 1)
			k_++;
	}
	ans = 1;
	for (k = 1; k <= n; k++)
		ans = (ans + dp[k]) % MD;
	printf("%d\n", ans);
	return 0;
}

Compilation message (stderr)

teams.c: In function 'main':
teams.c:10:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |  scanf("%d", &n);
      |  ^~~~~~~~~~~~~~~
teams.c:15:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |   scanf("%d", &a);
      |   ^~~~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...