Submission #81796

#TimeUsernameProblemLanguageResultExecution timeMemory
81796Just_Solve_The_ProblemCalvinball championship (CEOI15_teams)C++11
100 / 100
822 ms924 KiB
#include <stdio.h>

using namespace std;

const int N = (int)1e4 + 7;

int mod = (int)1e6 + 7;
int a[N];
int dp[2][N];

int add(int a, int b) {
	return (a + b) % mod;
}

int mult(long long a, long long b) {
	return (a * b) % mod;
}

int n, mx;
int asd[N];

main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		scanf("%d", &a[i]);
		asd[i] = asd[i - 1];
		if (a[i] > mx) {
			mx = a[i];
			asd[i]++;
		}
	}
	int ans = 1;
	for (int i = 1; i <= n; i++) dp[n & 1][i] = 1;
	ans = add(ans, mult(dp[n & 1][asd[n - 1]], a[n] - 1));
	for (int i = n - 1; i >= 1; i--) {
		for (int j = 0; j <= i; j++) {
			dp[i & 1][j] = add(mult(dp[(i & 1) ^ 1][j], j), dp[(i & 1) ^ 1][j + 1]);
		}
		ans = add(ans, mult(dp[i & 1][asd[i - 1]], a[i] - 1));
	}
	printf("%d", ans);
}

Compilation message (stderr)

teams.cpp:22:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main() {
      ^
teams.cpp: In function 'int main()':
teams.cpp:23:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
  ~~~~~^~~~~~~~~~
teams.cpp:25:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &a[i]);
   ~~~~~^~~~~~~~~~~~~
#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...