Submission #1179643

#TimeUsernameProblemLanguageResultExecution timeMemory
1179643Ahmed_KaanicheKoala Game (APIO17_koala)C++20
47 / 100
31 ms460 KiB
#include "koala.h"
#include <bits/stdc++.h>

using namespace std;
#define endl "\n"
#define ll long long
#define fi first
#define se second
#define pb push_back


int minValue(int n, int w) {
    int B[100], R[100];
    memset(B, 0, sizeof(B));
    B[0] = 1;
    
    playRound(B, R);
    
    if (R[0] <= 1)
        return 0;
    else {
        for (int i = 0; i < n; ++i) {
            if (R[i] == 0)
                return i;
        }
    }
}


int maxValue(int n, int w) {
    int B[n], R[n];
    memset(B, 0, sizeof(B));
    
    int cnt = n, ans = 0;
    vector<bool> v(n, 1);
    while (cnt > 1) {
        playRound(B, R);
        
        cnt = 0;
        for (int i = 0; i < n; i++) {
            if (!v[i])
                continue;
            if (R[i] > B[i]) {
                cnt++;
            } else {
                v[i] = 0;
                B[i] = 0;
            }
        }
        for (int i = 0; i < n; ++i) {
            if (R[i] > B[i] && v[i]) {
                ans = i;
                B[i] = 100 / cnt;
            }
        }
    }
    return ans;
}


int greaterValue(int n, int w) {
    int B[n], R[n];
    int l = 1, r = 13, mid;
    while (l <= r) {
        mid = (l + r) / 2;
        memset(B, 0, sizeof(B));
        memset(R, 0, sizeof(R));
        B[0] = B[1] = mid;
        
        playRound(B, R);
        
        if (R[0] > R[1])
            return 0;
        else if (R[1] > R[0])
            return 1;
        else if (R[1] > mid)
            l = mid + 1;
        else
            r = mid - 1;
    }
}


bool cmp(int n, int w, const int &x, const int &y) {
    int B[n], R[n];
    int l = 2, r = 26, mid;
    while (l <= r) {
        mid = (l + r) / 2;
        memset(B, 0, sizeof(B));
        memset(R, 0, sizeof(R));
        B[x] = B[y] = mid;
        
        playRound(B, R);
        
        if (R[x] > R[y])
            return 0;
        else if (R[y] > R[x])
            return 1;
        else if (R[y] > mid)
            l = mid + 1;
        else
            r = mid - 1;
    }
}

void allValues(int n, int w, int *p) {
    int B[n], R[n];
    vector<int> arr(n);
    for (int i = 0; i < n; ++i)
        arr[i] = i;
    
    sort(arr.begin(), arr.end(), [n, w](const int &x, const int &y) {
        return cmp(n, w, x, y);
    });
    
    for (int i = 0; i < n; ++i) {
        p[arr[i]] = i + 1;
    }
}

Compilation message (stderr)

koala.cpp: In function 'int minValue(int, int)':
koala.cpp:27:1: warning: control reaches end of non-void function [-Wreturn-type]
   27 | }
      | ^
koala.cpp: In function 'int greaterValue(int, int)':
koala.cpp:81:1: warning: control reaches end of non-void function [-Wreturn-type]
   81 | }
      | ^
koala.cpp: In function 'bool cmp(int, int, const int&, const int&)':
koala.cpp:104:1: warning: control reaches end of non-void function [-Wreturn-type]
  104 | }
      | ^
#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...