Submission #222103

#TimeUsernameProblemLanguageResultExecution timeMemory
222103VimmerKisik (COCI19_kisik)C++14
0 / 90
77 ms131076 KiB
#include <bits/stdc++.h> //#pragma GCC optimize("unroll-loops") //#pragma GCC optimize("-O3") //#pragma GCC optimize("Ofast") //#pragma GCC optimize("fast-math") //#pragma GCC optimize("no-stack-protector") #define F first #define S second #define sz(x) int(x.size()) #define pb push_back #define N 100005 #define MOD ll(998244353) using namespace std; typedef long long ll; typedef long double ld; int main() { ios_base::sync_with_stdio(0); istream::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, k; cin >> n >> k; pair <ll, ll> a[n]; pair <ll, ll> dp[n + 1][k + 1]; for (int i = 0; i < n; i++) cin >> a[i].S >> a[i].F; sort(a, a + n); for (int i = 0; i < n; i++) swap(a[i].F, a[i].S); for (int i = 0; i <= n; i++) for (int j = 0; j <= k; j++) dp[i][j].F = dp[i][j].S = 1e9; dp[0][0].F = dp[0][0].S = 0; for (int i = 0; i < n; i++) for (int j = 0; j <= min(i, k); j++) { if (dp[i + 1][j].F * dp[i + 1][j].S > dp[i][j].F * dp[i][j].S) dp[i + 1][j] = dp[i][j]; if (j == k) continue; ll len = dp[i][j].F + a[i].F; ll hg = max(a[i].S, dp[i][j].S); if (len * hg < dp[i + 1][j + 1].F * dp[i + 1][j + 1].S) {dp[i + 1][j + 1].F = len; dp[i + 1][j + 1].S = hg;} } cout << dp[n][k].F * dp[n][k].S; }
#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...