Submission #1237341

#TimeUsernameProblemLanguageResultExecution timeMemory
1237341dostsMeetings (IOI18_meetings)C++20
19 / 100
632 ms369308 KiB
#include "meetings.h" #include <bits/stdc++.h> #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2") #define int long long #define pii pair<int,int> #define vi vector<int> #define ff first #define ss second #define sp << " " << #define all(x) x.begin(),x.end() #define big(x) ((int)(x.size())) using namespace std; const int MOD = 1e9+7, LIM = 5e3+1, inf = 2e9; vi h; pii mn[LIM][LIM]; int dnq(int l,int r) { if (l > r) return 0; if (l == r) return h[l]; int p = mn[l][r].ss; int he = mn[l][r].ff; return min((p-l+1)*he+dnq(p+1,r),(r-p+1)*he+dnq(l,p-1)); } vi minimum_costs(std::vector<signed> H, std::vector<signed> L, std::vector<signed> R) { h = vector<int>(all(H)); int n = big(H); for (int i = 0;i<n;i++) { mn[i][i] = {H[i],i}; for (int j = i+1;j<n;j++) { if (h[j] > mn[i][j-1].ff) { mn[i][j].ff = h[j]; mn[i][j].ss = j; } else mn[i][j] = mn[i][j-1]; } } vi answer(big(L)); for (int ii = 0;ii<big(L);ii++) { answer[ii] = dnq(L[ii],R[ii]); } return answer; }
#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...