Submission #1277703

#TimeUsernameProblemLanguageResultExecution timeMemory
1277703baotoan655Catfish Farm (IOI22_fish)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#define file(name)  if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
using namespace std;

#ifdef ONLINE_JUDGE
#include "fish.h"
#endif // ONLINE_JUDGE

const long long INF = 1e16;

long long max_weights(int n, int m, vector<int> X, vector<int> Y, vector<int> W) {
    vector<vector<pair<int, int>>> f(n);
    vector<int> sz(n);
    vector<vector<long long>> dp_up(n), dp_down(n);
    for(int i = 0; i < n; ++i) f[i].emplace_back(0, 0);
    for(int i = 0; i < m; ++i) f[X[i]].emplace_back(Y[i], W[i]);
    for(int i = 0; i < n; ++i) f[i].emplace_back(n, 0);
    for(int i = 0; i < n; i++) {
        sort(f[i].begin(), f[i].end());
        sz[i] = f[i].size();
        dp_down[i].assign(sz[i], 0);
        dp_up[i].assign(sz[i], 0);
    }
    long long ans = 0;
    for(int i = 1; i < n; i++) {
        long long mx = 0;
        for(long long x : dp_up[i - 1]) {
            mx = max(mx, x);
        }
        for(long long x : dp_down[i - 1]) {
            mx = max(mx, x);
        }
        long long val_up = 0;
        int k = 0;
        for(int j = 0; j < sz[i]; j++) {
            while(k < sz[i - 1] && f[i - 1][k].first < f[i][j].first) {
                val_up = max(val_up, dp_up[i - 1][k]);
                val_up += f[i - 1][k].second;
                k++;
            }
            dp_up[i][j] = max(dp_up[i][j], max(mx, val_up));
        }
        long long val_down = 0;
        k = sz[i - 1] - 1;
        for(int j = sz[i] - 1; j >= 0; j--) {
            while(k >= 0 && f[i - 1][k].first > f[i][j].first) {
                val_down = max(val_down, dp_up[i - 1][k]);
                val_down = max(val_down, dp_down[i - 1][k]);
                k--;
            }
            val_down += f[i][j].second;
            dp_down[i][j] = max(dp_down[i][j], max(mx, val_down));
        }
    }
    for(long long j = 0; j < sz[n - 1]; j++) {
        ans = max({ans, dp_up[n - 1][j], dp_down[n - 1][j]});
    }
    return ans;
}

#ifndef ONLINE_JUDGE

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

//    file("A") else file("task");
    cout << max_weights(5, 4, {0, 1, 4, 3}, {2, 1, 4, 3}, {5, 2, 1, 3}) << '\n';
    return 0;
}

#endif

Compilation message (stderr)

/usr/bin/ld: /tmp/ccOZfCBZ.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccfQ6y98.o:fish.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status