Submission #99689

#TimeUsernameProblemLanguageResultExecution timeMemory
99689HardNutCalvinball championship (CEOI15_teams)C++17
10 / 100
44 ms32136 KiB
//#pragma GCC optimize("Ofast") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 2e5 + 5; const ll INF = 1e18 + 5; const ll mod = 1e6 + 7; const int tx[] = {1, -1, 0, 0}, ty[] = {0, 0, 1, -1}; const ll bs = 31; #define int ll int n, a[N], b[N], cnt, res[N]; int dp[2][1005][1005]; void rec(int cur = 1, int len = 1) { if (len == n) { cnt++; for (int i = 1; i <= n; i++) { if (a[i] != b[i]) return; } cout << "CH "; cout << cnt % mod; exit(0); } for (int i = 1; i <= cur + 1; i++) { b[len + 1] = i; rec(max(cur, i), len + 1); b[len + 1] = 0; } } int calc(int id, int mx, int tp) { // cout << id << " " << mx << " " << tp << "\n"; if (dp[tp][id][mx] != -1) return dp[tp][id][mx]; if (id == 1) return dp[tp][id][mx] = calc(id + 1, mx + 1, 0); return dp[tp][id][mx] = (calc(id + 1, mx, 0) * mx % mod + calc(id + 1, mx + 1, 1)) % mod; } main() { cin >> n; memset(dp, -1, sizeof(dp)); for (int i = 1; i <= n; i++) { cin >> a[i]; dp[0][n][i] = i; dp[1][n][i] = 1; } b[1] = 1; // rec(); int ans = 0; int mx = 0; for (int i = 1; i < n; i++) { for (int j = 1; j < a[i]; j++) { // cout << i + 1 << " "; // cout << calc(i + 1, max(mx + 1, j + 1), 0) << "\n"; ans = (ans + calc(i + 1, max(mx + 1, j + 1), 0)) % mod; } mx = max(mx, a[i]); } cout << (ans + a[n]) % mod; return 0; } /** 4 1 2 2 3 */

Compilation message (stderr)

teams.cpp:47:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main() {
      ^
#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...