Submission #1242609

#TimeUsernameProblemLanguageResultExecution timeMemory
1242609repsakCatfish Farm (IOI22_fish)C++20
0 / 100
73 ms16028 KiB
#include "fish.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

long long max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) {
    ll colOne = 0;
    ll colTwo = 0;

    
    for(int i = 0; i < M; i++){
        assert(X[i] <= 1);
        if(X[i] == 0) colOne += W[i];
        if(X[i] == 1) colTwo += W[i];
    }

    if(N <= 2) return max(colOne, colTwo);


    vector<vector<int>> a;
    vector<vector<int>> b;
    for(int i = 0; i < M; i++){
        if(X[i] == 0) a.push_back({Y[i], W[i]});
        if(X[i] == 1) b.push_back({Y[i], W[i]});
    } 
    sort(a.begin(), a.end());
    sort(b.begin(), b.end());

    int bCounter = 0;
    ll stackA = 0; ll stackB = 0; ll best = 0;

    for(int i = 0; i < (int)a.size(); i++){
        stackA += a[i][1];
        while(bCounter < (int)b.size() && b[bCounter][0] <= a[i][0]){
            stackB += b[bCounter][1];
            bCounter++;
        }

        best = max(
            best,
            stackA + colTwo - stackB
        );
    }

    return best;
}

// #include "grader.cpp"
#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...