Submission #1325645

#TimeUsernameProblemLanguageResultExecution timeMemory
1325645eri16The Big Prize (IOI17_prize)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> speichern;

vector<int> ask(int i);

vector<int> query(int i){
    if (speichern[i].size()){
        return speichern[i];
    }
    else{
        speichern[i]=ask(i);
        return speichern[i];
    }
}

vector <int> pos;

int find_best(int n){
    //let us denote the number of item of u as f(u)
    //from simple algebra we know that f(v-1)<500
    //and since 17<log2(200000)<18 we know we need 18 operation
    //for each query -- hence we can find every item of value
    //higher than v at 18*500 = 9000 queries
    
    int mx = 0;
    speichern.resize(n);
    vector <int> vv;
    int zuletz;
    
    for (int ind = 0; ind < 500; ind++){
        vector <int> v = query(ind);
        if (v[0]+v[1]==0){return ind;}
        if (v[0]+v[1]>mx){
            mx=v[0]+v[1];
            zuletz = ind;
        }
    }
    
    for (int i=0; i<zuletz; i++){vv.push_back(i);}
    
	while(vv.size()<mx){
		int l=0;
		int r=n-1;
		
		if(!vv.empty()){l=vv.back()+1;}
		
		while(l<r){
			int m=(l+r)/2;
			auto v=query(m);
			
			if (v[0]+v[1]==0){return m;}
			
			if(v[0]+v[1]<mx||v[0]>vv.size()){r=m;}
			else{l=m+1;}
		}
		auto v=query(m);
		if (v[0]+v[1]==0){return m;}	
		
		vv.push_back(l);
	}
	return -1;
}

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:58:30: error: 'm' was not declared in this scope
   58 |                 auto v=query(m);
      |                              ^