Submission #1343376

#TimeUsernameProblemLanguageResultExecution timeMemory
1343376jmuzhenCatfish Farm (IOI22_fish)C++20
3 / 100
51 ms8796 KiB
#include "fish.h"

#include <vector>
#include<bits/stdc++.h>
using namespace std;

long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,
                      std::vector<int> W) {
  bool is_sub1=1, is_sub2=1, is_sub3 = 1;
  for (int i = 0; i < M; i++) {
    if (X[i] % 2 != 0) is_sub1 = 0;
    if (X[i] > 1) is_sub2 = 0;
    if (Y[i] != 0) is_sub3 = 0;
  }

  if (is_sub1) {
    long long ans = 0;
    for (int i = 0; i < M; i++) ans += W[i];
    return ans;
  }
  else if (is_sub2) {
    long long col0 = 0, col1 = 0;
    for (int i = 0; i < M; i++) {
      if (X[i] == 0) col0 += W[i];
      else col1 += W[i];
    }
    return max(col0, col1);
  }
  else if (is_sub3) {
    int dp[100000+10][2][2]; // {prev built, next built}
    vector<bool> w(N, 0);
    for (int i = 0; i < M; i++) {
      w[X[i]] = W[i];
    }

    for (int i = 0; i < N; i++) {
      for (int prevb = 0; prevb <= 1; prevb++) {
        for (int nextb = 0; nextb <= 1; nextb++) {
          // prune
          if (i == 0 && prevb) continue;
          if (i == N-1 && nextb) continue;

          // case1. don't build
          int case1 = 0;
          {
            if (prevb || nextb) {
              // can take this one
              // case1a:take here
              case1 = max(case1, w[i] + max(dp[i-1][0][0], dp[i-1][1][0]));
            }
          }
          // case2. build
          int case2 = 0;
          {
            case2 = max(case2, max(dp[i-1][0][1], dp[i-1][1][1]));
          }
        }
      } // end dp

    } // for (N) loop


    return max(dp[N-1][0][0],dp[N-1][1][0]);
  }
}

Compilation message (stderr)

fish.cpp: In function 'long long int max_weights(int, int, std::vector<int>, std::vector<int>, std::vector<int>)':
fish.cpp:65:1: warning: control reaches end of non-void function [-Wreturn-type]
   65 | }
      | ^
#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...