Submission #1185275

#TimeUsernameProblemLanguageResultExecution timeMemory
1185275PlayVoltzTricks of the Trade (CEOI23_trade)C++20
0 / 100
55 ms4424 KiB
#include <cstdio> #include <stdio.h> #include <stdbool.h> #include <iostream> #include <map> #include <vector> #include <climits> #include <stack> #include <string> #include <queue> #include <algorithm> #include <set> #include <unordered_set> #include <unordered_map> #include <cmath> #include <cctype> #include <bitset> #include <iomanip> #include <cstring> #include <numeric> #include <cassert> using namespace std; #define int long long #define pii pair<int, int> #define mp make_pair #define pb push_back #define fi first #define se second int n, k, best=LLONG_MIN/2; vector<bool> ans; vector<pii> vect; void dnc(int l, int r, int optl, int optr){ if (l>r)return; int m=(l+r)/2, mx=LLONG_MIN/2, opt=-1, mn; priority_queue<int, vector<int>, greater<int> > pq; for (int i=min(m-1, optr), sum=vect[m].se-vect[m].fi; i>=optl; --i){ sum-=vect[i].fi; sum+=vect[i].se; pq.push(vect[i].se); if (pq.size()>=k)sum-=pq.top(), pq.pop(); if (pq.size()==k-1&&mx<sum)mx=sum, opt=i, mn=pq.top(); } if (best<mx)best=mx; if (opt==-1){ dnc(l, m-1, optl, optr); dnc(m+1, r, optl, optr); } else{ dnc(l, m-1, optl, opt); dnc(m+1, r, opt, optr); } } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>k; vect.resize(n); ans.resize(n, 0); for (int i=0; i<n; ++i)cin>>vect[i].fi; for (int i=0; i<n; ++i)cin>>vect[i].se; dnc(0, n-1, 0, n-1); cout<<best<<"\n"; for (auto a:ans)cout<<a; }
#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...