Submission #1263697

#TimeUsernameProblemLanguageResultExecution timeMemory
1263697gry3125Catfish Farm (IOI22_fish)C++20
0 / 100
29 ms5728 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, p0, p1;
  for (int i = 0; i < N; i++) {
    if (X[i] == 0) {
      a.pb(Y[i]);
      if (p0.empty()) {
        p0.pb(W[i]);
      } else {
        p0.pb(p0.back()+W[i]);
      }
    } else {
      b.pb(Y[i]);
      if (p1.empty()) {
        p1.pb(W[i]);
      } else {
        p1.pb(p1.back()+W[i]);
      }
    }
  }
  ll mx = max(p0.back(), p1.back());
  for (int i = 0; i < a.size(); i++) {
    if (b.back() <= a[i]) continue;
    if (a[i] < b.front()) {
      mx = max(mx, p0[i]+p1.back());
      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, p0[i]+p1.back()-p1[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...