QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#412545 | #4561. Catfish Farm | hmm789 | 0 | 0ms | 4092kb | C++14 | 2.7kb | 2024-05-16 16:00:51 | 2024-05-16 16:00:53 |
answer
#include "fish.h"
#include <bits/stdc++.h>
using namespace std;
long long max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) {
#define int long long
#define INF 1000000000000000000
int ans = 0;
vector<int> dp[2][6];
set<pair<int, int>> fish[N+1], pref[N+1];
set<pair<int, int>> s[2][N+1];
for(int i = 0; i < M; i++) {
fish[X[i]+1].insert({Y[i], W[i]});
}
for(int i = 0; i <= N; i++) {
if(fish[i].empty() || fish[i].begin()->first) fish[i].insert({0,0});
fish[i].insert({N,0});
int cnt = 0;
for(auto j : fish[i]) {
pref[i].insert({j.first, cnt});
cnt += j.second;
}
}
dp[0][0].push_back(0); dp[0][0].push_back(-INF);
dp[1][0].push_back(-INF); dp[1][0].push_back(-INF);
s[0][0].insert({0, 0});
s[1][0].insert({0, 0});
s[1][0].insert({N, INF});
for(int i = 1; i <= N; i++) {
int cnt = 0;
for(auto j : fish[i]) {
for(int k = 0; k < 2; k++) {
if(k == 0) { // up
auto it = s[0][i-1].upper_bound({j.first+1, INF}); it--;
auto tmp = pref[i-1].lower_bound({j.first, -INF});
int a1 = it->second + tmp->second;
if(j.first == 0) {
a1 = max(a1, dp[1][i-1][0]);
}
if(i == 1) a1 = 0;
dp[k][i].push_back(a1);
if(i < N) {
auto tmp = pref[i+1].lower_bound({j.first, -INF});
s[0][i].insert({j.first, max(dp[k][i].back() - cnt, (s[0][i].size() ? s[0][i].rbegin()->second : -INF))});
s[1][i].insert({j.first, -max(dp[k][i].back() + tmp->second, (s[1][i].size() ? s[1][i].begin()->second : -INF))});
}
} else {
auto it = s[1][i-1].lower_bound({j.first, -INF});
// cout << "process " << i << " " << j.first << " " << k << endl;
// for(auto it2 : s[1][i-1]) cout << it2.first << " " << -it2.second << endl;
dp[k][i].push_back(-it->second - cnt);
if(i < N) {
auto tmp = pref[i+1].lower_bound({j.first, -INF});
int toins = max(dp[k][i].back() + tmp->second, (s[1][i].size() ? s[1][i].begin()->second : -INF));
s[1][i].insert({j.first, -toins});
}
}
// cout << i << " " << j.first << " " << k << " " << dp[k][i].back() << endl;
ans = max(ans, dp[k][i].back());
}
cnt += j.second;
}
}
return ans;
#undef int
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Runtime Error
Test #1:
score: 0
Runtime Error
input:
f785163bfcb92ce6ac387bba5d2f29a0e0f37f19 90000 80699 0 10792 55091480 0 36762 389250726 0 79267 706445371 0 76952 290301137 0 13444 69711795 0 68980 66221400 0 1695 703252611 0 36628 632571604 0 87676 264578012 0 79496 397448339 0 57929 447544332 0 35453 355374818 0 62449 686423696 0 45614 667165709...
output:
Unauthorized output
result:
Subtask #2:
score: 0
Runtime Error
Test #7:
score: 6
Accepted
time: 0ms
memory: 3832kb
input:
f785163bfcb92ce6ac387bba5d2f29a0e0f37f19 3 2 0 0 1 1 1 1
output:
938f2698235a9ff1d1d91e23381b68bec7bed102 OK 2
result:
ok 3 lines
Test #8:
score: -6
Runtime Error
input:
f785163bfcb92ce6ac387bba5d2f29a0e0f37f19 90000 161862 0 56823 293232472 0 28967 124369573 1 8799 138712011 0 87115 743135614 1 56429 262092699 0 61318 597172732 0 39127 477101342 1 44938 277680401 1 79037 997527330 1 88113 13289754 0 29715 35249311 0 50637 709319782 1 20760 845594381 1 80662 6299890...
output:
Unauthorized output
result:
Subtask #3:
score: 0
Runtime Error
Test #20:
score: 0
Runtime Error
input:
f785163bfcb92ce6ac387bba5d2f29a0e0f37f19 100000 1 0 0 10082010
output:
Unauthorized output
result:
Subtask #4:
score: 0
Runtime Error
Test #28:
score: 14
Accepted
time: 0ms
memory: 4092kb
input:
f785163bfcb92ce6ac387bba5d2f29a0e0f37f19 4 3 2 2 1 0 0 1 1 1 1
output:
938f2698235a9ff1d1d91e23381b68bec7bed102 OK 3
result:
ok 3 lines
Test #29:
score: -14
Runtime Error
input:
f785163bfcb92ce6ac387bba5d2f29a0e0f37f19 8 7 5 5 1 4 4 1 6 6 1 3 3 1 0 0 1 2 2 1 1 1 1
output:
Unauthorized output
result:
Subtask #5:
score: 0
Skipped
Dependency #4:
0%
Subtask #6:
score: 0
Skipped
Dependency #5:
0%
Subtask #7:
score: 0
Runtime Error
Test #60:
score: 0
Runtime Error
input:
f785163bfcb92ce6ac387bba5d2f29a0e0f37f19 100000 99999 31026 31026 1 42940 42940 1 69303 69303 1 90350 90350 1 77507 77507 1 87126 87126 1 17988 17988 1 5146 5146 1 63023 63023 1 27776 27776 1 6136 6136 1 82557 82557 1 24904 24904 1 21667 21667 1 67271 67271 1 80294 80294 1 81145 81145 1 47144 47144 ...
output:
Unauthorized output
result:
Subtask #8:
score: 0
Skipped
Dependency #1:
0%