Submission #1002370

#TimeUsernameProblemLanguageResultExecution timeMemory
1002370overwatch9메기 농장 (IOI22_fish)C++17
6 / 100
94 ms34984 KiB
#include "fish.h"

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
vector <vector <pair <int, ll>>> fish;
vector <vector <ll>> pfx;
int n, m;
ll get_sum(int l, int r, int col) {
    pair <int, ll> tp = {l, 0};
    // for (auto j : fish[col])
    //     cout << j.first << '\n';
    int it = upper_bound(fish[col].begin(), fish[col].end(), tp) - fish[col].begin();
    it--;
    // cout << "IT1: " << it << '\n';
    tp.first = r+1;
    int it2 = upper_bound(fish[col].begin(), fish[col].end(), tp) - fish[col].begin();
    it2--;
    // cout << "IT2: " << it2 << '\n';
    return pfx[col][it2] - pfx[col][it];
}
vector <vector <ll>> dp;
ll max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) {
    n = N;
    m = M;
    fish.resize(N+1);
    pfx.resize(N+1);
    for (int i = 0; i < M; i++) {
        fish[X[i] + 1].push_back({Y[i] + 1, W[i]});
    }
    // dp = vector <vector <ll>> (N+1, vector <ll> (N+1, -1));
    for (int i = 1; i <= N; i++) {
        fish[i].push_back({0, 0});
        sort(fish[i].begin(), fish[i].end());
        pfx[i].resize((int)fish[i].size() + 5, 1e18);
        for (int j = 1; j < (int)fish[i].size(); j++)
            pfx[i][j] = pfx[i][j-1] + fish[i][j].second;
    }
    ll ans = max(get_sum(1, N+1, 1), get_sum(1, N+1, 2));
    for (int i = 1; i <= N; i++) {
        if (N > 2)
            ans = max(ans, get_sum(1, i, 1) + get_sum(i+1, N, 2));
    }
    return ans;
}
#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...