Submission #668127

#TimeUsernameProblemLanguageResultExecution timeMemory
668127finn__The Big Prize (IOI17_prize)C++17
20 / 100
75 ms5308 KiB
#include <bits/stdc++.h>
#include "prize.h"
using namespace std;

int find_best(int n)
{
    int ans_max = 0;
    vector<vector<int>> v(n);

    for (size_t i = 0; i * i < min(n, 474); i++)
    {
        v[i] = ask(i);
        ans_max = max(ans_max, v[i][0] + v[i][1]);

        if (!v[i][0] && !v[i][1])
            return i;
    }

    int i = -1, found = 0;

    while (1)
    {
        int a = i + 1, b = n - 1;

        while (a < b)
        {
            int mid = (a + b) / 2;
            if (v[mid].empty())
                v[mid] = ask(mid);

            if (!v[mid][0] && !v[mid][1])
                return mid;

            if (v[mid][0] + v[mid][1] == ans_max)
            {
                if (v[mid][0] == found)
                    a = mid + 1;
                else
                    b = mid;
            }
            else
                b = mid;
        }

        found++;
        i = a;

        if (v[i].empty())
            v[i] = ask(i);
        if (!v[i][0] && !v[i][1])
            return i;
    }
}

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:10:30: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'const int' [-Wsign-compare]
   10 |     for (size_t i = 0; i * i < min(n, 474); i++)
      |                        ~~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...