답안 #968979

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
968979 2024-04-24T10:40:20 Z kilkuwu 코알라 (APIO17_koala) C++17
37 / 100
52 ms 492 KB
#include "koala.h"
 
#include <bits/stdc++.h>
#ifdef LOCAL
#include "template/debug.hpp"
#else
#define dbg(...) ;
#define timer(...) ;
#endif
 
int minValue(int N, int W) {
  int B[N], R[N];
  for (int i = 0; i < N; i++) {
    B[i] = 0;
  }
  B[0] = 1;
  playRound(B, R);
 
  for (int i = 0; i < N; i++) {
    if (R[i] <= B[i]) {
      return i;
    }
  }
}
 
int maxValue(int N, int W) {
  int B[N], R[N];
  for (int i = 0; i < N; i++) {
    B[i] = 1;
  }
  playRound(B, R);
  int candidate[N];
  for (int i = 0; i < N; i++) {
    if (R[i] > B[i]) {
      candidate[i] = 1;
      B[i] = 2;
    } else {
      candidate[i] = 0;
      B[i] = 0;
    }
  }
  playRound(B, R);
  for (int i = 0; i < N; i++) {
    if (R[i] > B[i]) {
      if (candidate[i]) {
        B[i] = 4;
      } else {
        B[i] = 0;
      }
    } else {
      candidate[i] = 0;
      B[i] = 0;
    }
  }
  playRound(B, R);
  for (int i = 0; i < N; i++) {
    if (R[i] > B[i]) {
      if (candidate[i]) {
        B[i] = 11;
      } else {
        B[i] = 0;
      }
    } else {
      candidate[i] = 0;
      B[i] = 0;
    }
  }
  playRound(B, R);
 
  for (int i = 0; i < N; i++) {
    if (R[i] > B[i] && candidate[i]) return i;
  }
}
 
int greaterValue(int N, int W) {
  int B[N], R[N];

  for (int i = 0; i < N; i++) B[i] = 0;
  int mb = 5;
  B[0] = B[1] = mb;
  playRound(B, R);
  bool bought0 = R[0] > B[0];
  bool bought1 = R[1] > B[1];

  if (bought0 != bought1) return bought1;

  if (bought0) {
    mb = 8;
  } else {
    mb = 2;
  }

  B[0] = B[1] = mb;
  playRound(B, R);
  bought0 = R[0] > B[0];
  bought1 = R[1] > B[1];

  if (bought0 != bought1) return bought1;

  if (bought0) {
    mb = 3;
  } else {
    mb = 1;
  }

  B[0] = B[1] = mb;
  playRound(B, R);
  bought0 = R[0] > B[0];
  bought1 = R[1] > B[1];

  if (bought0 != bought1) return bought1;
  assert(false);
}

int B[100], R[100];
 
void allValues(int N, int W, int *P) {
  if (W == 2 * N) {
    std::vector<int> ord(N);
    std::iota(ord.begin(), ord.end(), 0);
    std::sort(ord.begin(), ord.end(), [&](int i, int j) {
      B[i] = B[j] = W / 2; 
      playRound(B, R);
      return R[j] > B[j];
    });

    for (int i = 0; i < N; i++) {
      P[ord[i]] = i;
    }
  } else {
    // TODO: Implement Subtask 5 solution here.
    // You may leave this block unmodified if you are not attempting this
    // subtask.
  }
}

Compilation message

koala.cpp: In function 'int minValue(int, int)':
koala.cpp:24:1: warning: control reaches end of non-void function [-Wreturn-type]
   24 | }
      | ^
koala.cpp: In function 'int maxValue(int, int)':
koala.cpp:73:1: warning: control reaches end of non-void function [-Wreturn-type]
   73 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 356 KB Output is correct
2 Correct 3 ms 344 KB Output is correct
3 Correct 3 ms 344 KB Output is correct
4 Correct 3 ms 452 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 344 KB Output is correct
2 Correct 10 ms 344 KB Output is correct
3 Correct 11 ms 344 KB Output is correct
4 Correct 12 ms 456 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 41 ms 472 KB Output is correct
2 Correct 43 ms 468 KB Output is correct
3 Correct 41 ms 484 KB Output is correct
4 Correct 40 ms 484 KB Output is correct
5 Correct 40 ms 492 KB Output is correct
6 Correct 49 ms 464 KB Output is correct
7 Correct 52 ms 468 KB Output is correct
8 Correct 40 ms 472 KB Output is correct
9 Correct 41 ms 468 KB Output is correct
10 Correct 43 ms 492 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -