QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#430584 | #7279. Tricks of the Trade | ItamarN | 0 | 2ms | 5724kb | C++14 | 3.2kb | 2024-06-04 00:34:08 | 2024-06-04 00:34:09 |
answer
#include <iostream>
using namespace std;
#include <vector>
#define vi vector<int>
#define ll long long
#include <algorithm>
#include <set>
#include <string>
#include <bitset>
#include <cmath>
#include <math.h>
#define pll pair<ll,ll>
#define vll vector<ll>
#define pi pair<int,int>
#include <map>
#include <queue>
#define x first
#define y second
#define pd pair<double,double>
const int siz = 3e5;
ll c[siz];
ll s[siz];
int n,k;
multiset<int>::iterator kth;
ll sum = 0;
multiset<int> mul;
ll ans = -1e18;
ll cost = 0;
void er(ll i) {
cost -= c[i];
ll val = s[i];
if (mul.size() <= k+1) {
mul.erase(mul.find(val));
sum -= val;
kth = mul.begin();
}
else {
auto it = mul.find(val);
if (val < *kth || (val == *kth && it != kth)) {
mul.erase(it);
return;
}
else {
kth--;
sum += *kth - val;
mul.erase(it);
return;
}
}
}
void in(ll i) {
ll val = s[i];
cost += c[i];
if (mul.size() < k) {
mul.insert(val);
sum += val;
kth = mul.begin();
}
else {
mul.insert(val);
if (*kth >= val)return;
sum += val - *kth;
kth++;
}
}
void rec(int l, int r, int a, int b) {
if (l > r)return;
int mid = (l + r) / 2;
b = min(mid , b);
pll opt={-1e18,a};
for (int i = a; i <= b; i++) {
if (mid - i + 1 >= k) {
opt = max(opt, { sum - cost,i });
}
er(i);
}
ans = max(ans, opt.x);
if (l == r)return;
for (int i = mid; i > max(b,(l+mid-1)/2); i--)er(i);
for (int i = a; i <=min(b, (l + mid-1) / 2);i++)in(i);
rec(l, mid - 1, a, opt.y);
for (int i = mid; i > max(b, (l + mid - 1) / 2); i--)in(i);
for (int i = a; i <= min(b, (l + mid - 1) / 2); i++)er(i);
for (int i = mid+1; i <= (r+ mid+1) / 2; i++)in(i);
for (int i = opt.y; i <=b; i++)in(i);
rec(mid+1, r, opt.y, b);
for (int i = mid + 1; i <= (r + mid + 1) / 2; i++)er(i);
for (int i = opt.y; i <= b; i++)er(i);
for (int i = a; i <= b; i++) {
if (mid - i + 1 >= k) {
opt = max(opt, { sum - cost,i });
}
in(i);
}
}
int main()
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
cin >> n >> k;
for (int i = 0; i < n; i++)cin >> c[i];
for (int i = 0; i < n; i++)cin >> s[i];
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
in(j);
if (j - i + 1 >= k)ans = max(ans, sum - cost);
}
/*for (int j = i; j < n; j++) {
er(j);
}*/
cost = 0, sum = 0;
mul.clear();
}
cout << ans << "\n";
for (int i = 0; i < n; i++)cout << '0';
//for (int i = 0; i <= (n-1)/2; i++)in(s[i]);
//rec(0, n - 1, 0, n - 1);
}
// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu
// Tips for Getting Started:
// 1. Use the Solution Explorer window to add/manage files
// 2. Use the Team Explorer window to connect to source control
// 3. Use the Output window to see build output and other messages
// 4. Use the Error List window to view errors
// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 5
Acceptable Answer
time: 1ms
memory: 5572kb
input:
5 3 3 5 2 3 6 2 1 5 2 3
output:
-1 00000
result:
points 0.50 first question correct
Test #2:
score: 5
Acceptable Answer
time: 2ms
memory: 5720kb
input:
200 40 81 50 87 91 54 1 77 68 19 84 28 81 45 64 4 13 25 89 12808135 86 40 73 47 18 82 79 11 96 16 34 80 36 8 5 60 76 86 84 36 37 96 55 68 12807879 51 89 57 30 100 11 44 19 96 32 9 68 41 12808009 5 58 12807939 92 68 67 78 32 57 49 71 92 64 35 89 76 81 36 6 6 53 31 85 79 5 85 1 91 17 37 25 91 54 29 47...
output:
12807909 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
result:
points 0.50 first question correct
Test #3:
score: 5
Acceptable Answer
time: 2ms
memory: 5708kb
input:
200 41 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
81 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
result:
points 0.50 first question correct
Test #4:
score: 5
Acceptable Answer
time: 1ms
memory: 5596kb
input:
5 2 1 6 1 5 2 4 1 6 2 4
output:
2 00000
result:
points 0.50 first question correct
Test #5:
score: 5
Acceptable Answer
time: 1ms
memory: 5592kb
input:
7 3 5 1 1 1 1 1 5 1 1 1 1 1 1 1
output:
0 0000000
result:
points 0.50 first question correct
Test #6:
score: 5
Acceptable Answer
time: 2ms
memory: 5612kb
input:
200 100 142654162 64490063 513345044 219974445 84112685 711899650 33120992 176027514 802361343 2414916 941549932 786288853 94273368 829024564 352947721 355629698 903479794 326383768 720620114 271371691 786997028 138881060 711795174 536092340 290169962 938690480 710723910 231424065 468554799 44519400...
output:
-2461503019 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
result:
points 0.50 first question correct
Test #7:
score: 5
Acceptable Answer
time: 2ms
memory: 5724kb
input:
200 199 392097713 864387769 236976435 989793783 997090826 107508554 219275702 329027733 181833481 896113693 791833669 652173288 689106070 645879177 369017772 739620594 465647432 361649152 704125516 383540722 576805937 293955811 610328615 867720036 757212267 369257718 556736284 696523840 140108544 86...
output:
-105367042470 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
result:
points 0.50 first question correct
Test #8:
score: 0
Wrong Answer
time: 2ms
memory: 5580kb
input:
200 3 746 47 728 416 642 210 910 989 579 230 210 69 492 889 382 557 765 799 530 654 409 580 142 660 984 564 669 995 761 37 626 486 787 448 702 896 828 141 506 819 513 930 633 306 458 592 317 358 1 399964794 122 33 989 530 924 440 783 752 486 723 756 383 521 710 203 880 43 938 619 108 312 627 838 897...
output:
1899918253 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
result:
wrong answer wrong answer on the first question
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Time Limit Exceeded
Test #30:
score: 5
Acceptable Answer
time: 1ms
memory: 5572kb
input:
5 2 1 6 1 5 2 4 1 6 2 4
output:
2 00000
result:
points 0.50 first question correct
Test #31:
score: 0
Time Limit Exceeded
input:
250000 2 18 35 29 35 18 610084694 18 35 29 35 18 448867144 18 35 29 35 18 971272498 18 35 29 35 18 890430190 18 35 29 35 18 655685684 18 35 29 35 18 234608237 18 35 29 35 18 894586749 18 35 29 35 18 442195168 18 35 29 35 18 341564617 18 35 29 35 18 985069087 18 35 29 35 18 967546483 18 35 29 35 18 5...
output:
result:
Subtask #4:
score: 0
Skipped
Dependency #3:
0%
Subtask #5:
score: 0
Skipped
Dependency #1:
0%