Submission #699161

#TimeUsernameProblemLanguageResultExecution timeMemory
699161MasterTaster커다란 상품 (IOI17_prize)C++14
20 / 100
99 ms424 KiB
#include "prize.h"
#include <iostream>
#include <vector>
#include <cmath>

#define ll long long
#define pii pair<int, int>
#define xx first
#define yy second
#define pb push_back
#define MAXN 200010

using namespace std;

int n, l[MAXN], r[MAXN], maxx, sq=447;
vector<int> all;

bool check(int i, int k)
{
    vector<int> p=ask(i);
    int le=p[0], ri=p[1];
    if ((le+ri)<maxx) return true;
    if (le>k) return true;
    return false;
}

int find_best(int N) {
    n=N;
    sq=sqrt(n)+1;
    for (int i=0; i<sq; i++)
    {
        vector<int> p=ask(i);
        l[i]=p[0]; r[i]=p[1];
        maxx=max(maxx, l[i]+r[i]);
    }

    int lf=0; int rr=n-1, k=0;
    for (int i=0; i<maxx; i++)
    {
        int where=-1;
        while (lf<=rr)
        {
            int mid=lf+(rr-lf)/2;
            if (check(mid, all.size()))
            {
                where=mid;
                rr=mid-1;
            }
            else
                lf=mid+1;
        }
        //cout<<where<<endl;
        all.pb(where);
        lf=where+1;
        rr=n-1;
    }

    int ret=0;
    for (int i=0; i<all.size(); i++) { vector<int> p=ask(all[i]); if ((p[0]+p[1])==0) ret=all[i]; }
    return ret;
}
///1, 2, 5, 26, 677
/*
8
3 2 3 1 3 3 2 3
*/

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:59:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |     for (int i=0; i<all.size(); i++) { vector<int> p=ask(all[i]); if ((p[0]+p[1])==0) ret=all[i]; }
      |                   ~^~~~~~~~~~~
prize.cpp:37:27: warning: unused variable 'k' [-Wunused-variable]
   37 |     int lf=0; int rr=n-1, k=0;
      |                           ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...