#include "koala.h"
#include <bits/stdc++.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int minValue(int N, int W) {
int n=N;
int tab[N];
int ans[N];
memset(tab,0,sizeof tab);
tab[0]=1;
playRound(tab,ans);
int res=-1;
for (int i = 0; i < n; ++i)
{
if(ans[i]==0) res=i;
}
if(res!=-1) return res;
tab[0]=0;
tab[1]=1;
playRound(tab,ans);
for (int i = 0; i < n; ++i)
{
if(ans[i]==0) res=i;
}
return res;
}
int maxValue(int N, int W) {
int n=N;
int tab[n];
int cur[n];
int still[n];
for (int i = 0; i < n; ++i) still[i]=1;
for (int i = 0; i < n; ++i) tab[i]=1;
int cnt=1;
int h[4]={1,2,4,12};
while(cnt<5){
playRound(tab,cur);
for (int i = 0; i < n; ++i)
{
if(cur[i]>h[cnt-1]) still[i]=1;
else still[i]=0;
if(still[i]==1) tab[i]=h[cnt];
else tab[i]=0;
}
cnt++;
}
int res;
for (int i = 0; i < n; ++i)
{
if(still[i]==1) res=i;
}
return res;
}
int greaterValue(int N, int W) {
int tab[100];
memset(tab,0,sizeof tab);
int cur[100];
int l=1;
int r=min(N/2+1,9);
while(r>=l){
int mid=(r+l)/2;
tab[0]=mid;
tab[1]=mid;
playRound(tab,cur);
if(cur[0]<=mid&&cur[1]<=mid) r=mid-1;
else l=mid+1;
if(cur[0]<=mid&&cur[1]>mid) return 1;
if(cur[1]<=mid&&cur[0]>mid) return 0;
}
}
bool compare(int N,int i,int j){
int tab[N];
int cur[N];
memset(tab,0,sizeof tab);
tab[i]=N;
tab[j]=N;
playRound(tab,cur);
return (cur[i]>N ? 1 : 0);
}
vector<int> mergesort(int N,int l,int r){
if(l>r) return{};
if(l==r) {
return {l};
}
int mid=(r+l)/2;
vector<int> a=mergesort(N,l,mid);
vector<int> b=mergesort(N,mid+1,r);
vector<int> cur;
int j=0;
for (int i = 0; i < a.size(); ++i)
{
while(j<b.size()&&compare(N,a[i],b[j])==1) cur.push_back(b[j++]);
cur.push_back(a[i]);
}
while(j<b.size()) cur.push_back(b[j++]);
return cur;
}
vector<int> arr(100);
void sorting(int l,int r,vector<int> v){
if(l==r){
arr[v[0]]=l;
return;
}
int k=min(int(sqrt(2*l)),int(100/(r-l+1)));
//cout <<k<<endl;
int a[100];
memset(a,0,sizeof a);
int b[100];
for (int i = 0; i < v.size(); ++i)
{
a[v[i]]=k;
}
playRound(a,b);
vector<int> less;
vector<int> greater;
for (int i = 0; i < v.size(); ++i)
{
if(b[v[i]]>k) greater.push_back(v[i]);
else less.push_back(v[i]);
}
sorting(l,l+less.size()-1,less);
sorting(r-greater.size()+1,r,greater);
}
void allValues(int N, int W, int *P) {
if (W == 2*N) {
vector<int> tab=mergesort(N,0,N-1);
for (int i = 0; i < N; ++i)
{
P[tab[i]]=i+1;
}
} else {
vector<int> v(100);
for (int i = 0; i < 100; ++i)
{
v[i]=i;
}
sorting(1,100,v);
for (int i = 0; i < 100; ++i)
{
P[i]=arr[i];
}
}
}
Compilation message (stderr)
koala.cpp: In function 'int greaterValue(int, int)':
koala.cpp:74:1: warning: control reaches end of non-void function [-Wreturn-type]
74 | }
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |