Submission #707239

# Submission time Handle Problem Language Result Execution time Memory
707239 2023-03-08T16:48:29 Z 600Mihnea Koala Game (APIO17_koala) C++17
19 / 100
12 ms 336 KB
#include "koala.h"
#include <cmath>
#include <functional>
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <list>
#include <time.h>
#include <math.h>
#include <random>
#include <deque>
#include <queue>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <cassert>
#include <bitset>
#include <sstream>
#include <chrono>
#include <cstring>
#include <numeric>

using namespace std;

const int NMAX = 1000 + 7;
int nglob;
int b[NMAX];
int r[NMAX];
int wn[NMAX];
int isbig[NMAX];

void print(int a[])
{
    cout << " ---> ";
    for (int i = 0; i < nglob; i++)
    {
        cout << a[i] << " ";
    }
    cout << "\n";
}

void ask()
{
    playRound(b, r);
    for (int i = 0; i < nglob; i++)
    {
        wn[i] = (r[i] > b[i]);
    }
}

int minValue(int n, int w)
{
    nglob = n;
    assert(n < NMAX);
    assert(w < NMAX);
    // TODO: Implement Subtask 1 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    // cout << "salutare!\n";
    assert(n == w);
    assert(n % 2 == 0);
    for (int i = 0; i < n; i++)
    {
        b[i] = 0;
    }
    b[3] = 1;
    ask();
    int cnt_lose = 0;
    for (int i = 0; i < n; i++)
    {
        cnt_lose += (wn[i] == 0);
    }
    assert(cnt_lose == 1);
    for (int i = 0; i < n; i++)
    {
        if (wn[i] == 0)
        {
            return i;
        }
    }
    assert(0);
}

int maxValue(int n, int w)
{
    nglob = n;
    assert(n < NMAX);
    assert(w < NMAX);
    assert(n == w);
    assert(n % 2 == 0);
    for (int i = 0; i < n; i++)
    {
        isbig[i] = 1;
    }
    // un fel de cautare binara in functie de "isbig"
    for (auto& val : { 1, 2, 4, 11 })
    {
        for (int i = 0; i < n; i++)
        {
            b[i] = 0;
            if (isbig[i])
            {
                b[i] = val;
            }
        }
        ask();
        for (int i = 0; i < n; i++)
        {
            isbig[i] &= wn[i];
        }   
    }
    int cntbig = 0;
    for (int i = 0; i < n; i++)
    {
        cntbig += isbig[i];
    }
    assert(cntbig == 1);
    for (int i = 0; i < n; i++)
    {
        if (isbig[i])
        {
            return i;
        }
    }
    assert(0);
}

int greaterValue(int n, int w)
{
    nglob = n;
    assert(n < NMAX);
    assert(w < NMAX);
    // TODO: Implement Subtask 3 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    return 0;
}

void allValues(int n, int w, int* p)
{
    nglob = n;
    assert(n < NMAX);
    assert(w < NMAX);
    if (w == 2 * n)
    {
        // TODO: Implement Subtask 4 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
    }
    else
    {
        //cout << "salut!\n";
        assert(w == n);
        // TODO: Implement Subtask 5 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
    }
}
# Verdict Execution time Memory Grader output
1 Correct 4 ms 208 KB Output is correct
2 Correct 4 ms 208 KB Output is correct
3 Correct 4 ms 332 KB Output is correct
4 Correct 4 ms 208 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 332 KB Output is correct
2 Correct 12 ms 336 KB Output is correct
3 Correct 11 ms 328 KB Output is correct
4 Correct 11 ms 208 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -