Submission #1278060

#TimeUsernameProblemLanguageResultExecution timeMemory
1278060SabaKharebavaFestival (IOI25_festival)C++20
0 / 100
1205 ms2066932 KiB
#include<bits/stdc++.h> using namespace std; vector<int> max_coupons(int a, vector<int> p, vector<int> t) { #define pb push_back int n = p.size(); vector<vector<int>> v; for (int i = 0; i < n; i++) v.pb({p[i], t[i], i}); sort(v.begin(), v.end(), [&](vector<int> a, vector<int> b) { int A = -a[0]*a[1]*b[1] - b[0]*b[1]; int B = -b[0]*a[1]*b[1] - a[0]*a[1]; if (A == B) return a[0] < b[0]; return A > B; }); //cout<< "CONSTRUCTING THE DP :\n"; vector<vector<int>> dp(n+1, vector<int> (n+1, -1)); for (int i = 1; i <= n; i++) { // cout<< "\t" << i << " -> " << (a-v[i-1][0]) * v[i-1][1] << '\n'; dp[i][1] = (a - v[i-1][0]) * v[i-1][1]; dp[i][0] = a; } //cout<< "\nSORTED V :\n"; //for (vector<int> vv : v) // cout<< '\t' << vv[0] << " : " << vv[1] << "\n"; //cout<< '\n'; //cout<< "DP :\n"; for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { dp[i][j] = max(dp[i-1][j], dp[i][j]); dp[i][j] = max(dp[i][j], (dp[i-1][j-1] - v[i-1][0]) * v[i-1][1]); // cout<< '\t' << dp[i][j] << ' '; } // cout<< '\n'; } //cout<< '\n'; vector<int> ans; int am = n; while (am > 0 and dp[n][am] < 0) am--; if (am == 0) return {}; int last = n; while (am > 0 and last > 0) { if (am == last or dp[last][am] != dp[last-1][am]) { ans.pb(v[last-1][2]); last--; am--; continue; } last--; } reverse(ans.begin(), ans.end()); return ans; } /* int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, a; cin>> n >> a; vector<int> p(n), t(n); for (int &e : p) cin>> e; for (int &e : t) cin>> e; vector<int> ans = max_coupons(a, p, t); cout<< ans.size() << '\n'; for (int e : ans) cout<< e << ' '; cout<< '\n'; return 0; } */
#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...