Submission #1332479

#TimeUsernameProblemLanguageResultExecution timeMemory
1332479opeleklanosCatfish Farm (IOI22_fish)C++20
3 / 100
82 ms15560 KiB
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;


#define ll long long 

ll max_weights(int n, int m, vector<int> x, vector<int> y, vector<int> w){
    if(n == 2){
        ll ans0 = 0;
        ll ans1 = 0;
        for(ll i = 0; i<m; i++){
            if(x[i] == 0) ans0 += (ll)w[i];
            else ans1+=(ll)w[i];
        }
        return max(ans0, ans1);
    }

    vector<pair<ll, ll>> x0;
    vector<pair<ll, ll>> x1;
    ll mx = 0;
    ll ans = 0;
    for(ll i = 0; i<m; i++){
        if(x[i] == 1) x1.push_back({y[i], w[i]});
        else x0.push_back({y[i], w[i]});
    }

    x0.push_back({n+1, 0});
    x1.push_back({n+1, 0});

    sort(x0.begin(), x0.end());
    sort(x1.begin(), x1.end());

    for(ll i = 0; i<x1.size(); i++) ans += (ll)x1[i].second;
    mx = ans;
    ll ind0 = 0;
    ll ind1 = 0;
    for(ll i = 0; i<m; i++){
        if(x0[ind0].first < x1[ind1].first){
            ans += (ll)x0[ind0].second;
            ind0++;
        }
        else if(x0[ind0].first == x1[ind1].first){
            ans += (ll)x0[ind0].second;
            ans -= (ll)x1[ind1].second;
            ind0++;
            ind1++;
        }
        else{
            ans -= (ll) x1[ind1].second;
            ind1++;
        }
        mx = max(mx, ans);
    }
    
    return mx;
}

// int main(void){
//     freopen("input.txt", "r", stdin);
//     int n1; cin>>n1;
//     int m1; cin>>m1;
//     vector<int> x1(m1, 0), y1(m1, 0), w1(m1, 0);
//     for(int i = 0; i<m1; i++) cin>>x1[i]>>y1[i]>>w1[i];

//     cout<<max_weights(n1, m1, x1, y1, w1)<<endl;
//     return 0;

// }
#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...