Submission #1102286

#TimeUsernameProblemLanguageResultExecution timeMemory
1102286ro9669Nile (IOI24_nile)C++17
0 / 100
2072 ms4944 KiB
#include <bits/stdc++.h> #define fi first #define se second #define all(v) v.begin() , v.end() #define sz(v) int(v.size()) #define unq(v) sort(all(v)); v.resize(unique(all(v)) - v.begin()); #include "nile.h" using namespace std; typedef long long ll; typedef pair<int , int> ii; typedef pair<long long , int> lli; const int maxN = int(2e5)+7; ll dp[maxN]; vector<int> w , a , b , e , id; vector<ll> res; vector<long long> calculate_costs(vector<int> _w , vector<int> _a , vector<int> _b , vector<int> _e){ w = _w; a = _w; b = _b; e = _e; int n = sz(w); id.resize(n); for (int i = 0 ; i < n ; i++) id[i] = i; sort(all(id) , [](int x , int y){ return w[x] < w[y]; }); for (int d : e){ dp[0] = 0; for (int i = 0 ; i < n ; i++){ ll s = 0; int x = INT_MAX; dp[i + 1] = ll(1e18); for (int j = i ; j >= 0 ; j--){ s += b[id[j]]; x = min(x , a[id[j]] - b[id[j]]); if (w[id[i]] - w[id[j]] <= d){ if ((i - j)&1){ dp[i + 1] = min(dp[i + 1] , dp[j] + s); } else{ dp[i + 1] = min(dp[i + 1] , dp[j] + s + 1ll * x); } } else{ break; } } } res.push_back(dp[n]); } return res; }
#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...