Submission #1263691

#TimeUsernameProblemLanguageResultExecution timeMemory
1263691gry3125Catfish Farm (IOI22_fish)C++20
0 / 100
14 ms3776 KiB
#include "fish.h"
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
using namespace std;

// sub 2
ll max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) {
  vector<ll> a, b, pa, pb;
  for (int i = 0; i < N; i++) {
    if (X[i] == 0) a.pb(Y[i]);
    else b.pb(Y[i]);
  }
  pa.resize(a.size()); pb.resize(b.size());
  pa[0] = W[a[0]]; pb[0] = W[b[0]];
  for (int i = 1; i < a.size(); i++) pa[i] = pa[i-1] + W[a[i]];
  for (int i = 1; i < b.size(); i++) pb[i] = pb[i-1] + W[b[i]];
  ll mx = max(pa[a.size()-1], pb[b.size()-1]);
  for (int i = 0; i < a.size(); i++) {
    if (b[b.size()-1] <= a[i]) continue;
    int L = 0, R = b.size()-1;
    while (L < R) {
      int m = (L + R) / 2;
      if (b[m] <= a[i]) L = m+1;
      else R = m;
    }
    mx = max(mx, pa[i]+pb[N]-pb[L]);
  }
  return mx;
}
#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...