Submission #1286612

#TimeUsernameProblemLanguageResultExecution timeMemory
1286612kawhietFestival (IOI25_festival)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include "festival.h" using namespace std; constexpr int N = 71; constexpr int64_t inf = 1e14; pair<int64_t, vector<int>> dp[N][N]; vector<int> max_coupons(int A, vector<int> p, vector<int> t) { int n = p.size(); auto get = [&](vector<int> b) { int x = A; for (auto i : b) { if (x >= p[i]) { x = (x - p[i]) * t[i]; } } return x; }; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { dp[i][j] = {-inf, vector<int>{}}; } } if (A >= p[0]) { dp[0][1] = {A - p[0], vector<int>{0}}; } for (int i = 1; i < n; i++) { for (int j = 1; j <= i + 1; j++) { if (dp[i - 1][j - 1].first < 0) continue; dp[i][j] = max(dp[i][j], dp[i - 1][j]); vector<int> b = dp[i - 1][j - 1].second; int m = b.size(); b.push_back(i); int mx = get(b); vector<int> res; if (mx > 0) { res = b; } for (int k = m - 1; k >= 0; k--) { swap(b[k], b[k + 1]); int ret = get(b); if (ret > mx) { mx = ret; res = b; } } dp[i][j] = {mx, res}; } } int mx = 0; vector<int> res; for (int i = 0; i < n; i++) { for (int j = 1; j <= n; j++) { auto [k, v] = dp[i][j]; if (k > mx) { mx = k; res = v; } } } return res; } int main() { int N, A; assert(2 == scanf("%d %d", &N, &A)); vector<int> P(N), T(N); for (int i = 0; i < N; i++) assert(2 == scanf("%d %d", &P[i], &T[i])); fclose(stdin); vector<int> R = max_coupons(A, P, T); int S = R.size(); printf("%d\n", S); for (int i = 0; i < S; i++) printf("%s%d", (i == 0 ? "" : " "), R[i]); printf("\n"); fclose(stdout); return 0; }

Compilation message (stderr)

/usr/bin/ld: /tmp/cchbcjoB.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc5HDLhC.o:festival.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status