Submission #224402

# Submission time Handle Problem Language Result Execution time Memory
224402 2020-04-17T18:56:15 Z Bruteforceman Koala Game (APIO17_koala) C++11
11 / 100
67 ms 480 KB
#include <bits/stdc++.h>
#include "koala.h"
using namespace std;

int minValue(int N, int W) {
    // TODO: Implement Subtask 1 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    int A[N], B[N];
    for(int i = 0; i < N; i++) {
      if(i)  A[i] = 0;
      else A[i] = 1;
    }
    playRound(A, B);
    for(int i = 0; i < N; i++) {
      if(A[i] >= B[i]) return i;
    }
    return 0;
}

int maxValue(int N, int W) {
    // TODO: Implement Subtask 2 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
  vector <int> can;
  for(int i = 0; i < N; i++) can.emplace_back(i);
  int A[N], B[N];
  for(int i = 1; i <= 13; i++) {
    memset(A, 0, sizeof A);
    for(int j : can) {
      A[j] = i;
    }
    playRound(A, B);
    vector <int> aux;
    for(int j : can) {
      if(A[j] < B[j]) aux.emplace_back(j);
    }
    swap(can, aux);
    if(can.size() == 1) return can[0];
  }
  return 0;
}

int cmp(int sz, int coin,  int N, int W) {
    // TODO: Implement Subtask 3 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
  if(N == W) return 0;
  int l = 1, r = min(13, coin / 2);
  int A[sz],  B[sz];
  while(l <= r) {
    int m = (l + r) >> 1;
    memset(A, 0, sizeof A);
    A[N] = A[W] = m;
    int cnt = 0;
    for(int i = 0; cnt < (coin - 2*m) && i < sz; i++) {
      if(i != N && i != W) {
        A[i] = 1;
        ++cnt;
      }
    }
    playRound(A, B);
    if(A[N] < B[N] && A[W] < B[W]) {
      l = m + 1;
    } else if (A[N] >= B[N] && A[W] >= B[W]) {
      r = m - 1;
    } else {
      return B[N] < B[W];
    }
  }
  return 0;
}
int greaterValue(int N, int W) {
  return cmp(N, W, 0, 1);
}

void allValues(int N, int W, int *P) {
  int A[N];
  for(int i = 0; i < N; i++) {
    A[i] = i;
  }
  sort(A, A + N, [&] (int i, int j) { return cmp(N, W, i, j);  });
  for(int i = 0; i < N; i++) {
    P[A[i]] = i + 1;
  }
} 
# Verdict Execution time Memory Grader output
1 Correct 10 ms 384 KB Output is correct
2 Correct 10 ms 384 KB Output is correct
3 Correct 11 ms 384 KB Output is correct
4 Correct 10 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Partially correct 37 ms 384 KB Output is partially correct
2 Partially correct 38 ms 388 KB Output is partially correct
3 Partially correct 40 ms 384 KB Output is partially correct
4 Partially correct 38 ms 384 KB Output is partially correct
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 62 ms 384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 67 ms 480 KB Output isn't correct
2 Halted 0 ms 0 KB -