This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "koala.h"
#include <bits/stdc++.h>
using namespace std;
const int N = 105;
int b[N],r[N];
int minValue(int N, int W) {
// TODO: Implement Subtask 1 solution here.
// You may leave this function unmodified if you are not attempting this
// subtask.
b[0] = 1;
playRound(b,r);
if (r[0] == 0) return 0;
else
{
for(int i=0;N>i;i++)
{
if (r[i] == 0) return i;
}
}
return 0;
}
int maxValue(int N, int W) {
/*int yee = 11;
for (int i=91;100>i;i++) b[i]=yee;
playRound(b,r);
for (int i=0;100>i;i++) cout << r[i] << ' ' ;
cout << endl;
for (int i=0;100>i;i++)
{
if (r[i] == yee+1) cout << "i = " << i << endl;
}*/
vector<int> v;
for (int i=0;100>i;i++) v.push_back(i);
int take[4] = {1,2,4,11};
for (int i=0;4>i;i++)
{
memset(b,0,sizeof(b));
for (int j:v) b[j] = take[i];
playRound(b,r);
vector<int> vv;
for (int j:v)
{
if (r[j] == take[i]+1) vv.push_back(j);
}
v = vv;
}
return v[0];
// TODO: Implement Subtask 2 solution here.
// You may leave this function unmodified if you are not attempting this
// subtask.
return 0;
}
int greaterValue(int N, int W) {
int L=1,R=13;
while (L <= R)
{
int mid=(L+R)>>1;
memset(b,0,sizeof(b));
b[0] = mid;
b[1] = mid;
playRound(b,r);
if (r[0] != r[1])
{
if (r[0] > r[1]) return 0;
else return 1;
}
else if (r[0] > 0) L = mid+1;
else R = mid-1;
}
// TODO: Implement Subtask 3 solution here.
// You may leave this function unmodified if you are not attempting this
// subtask.
return 0;
}
bool cmp(const int &x,const int &y)
{
int L=1,R=13;
while (L <= R)
{
int mid=(L+R)>>1;
b[x] = mid;
b[y] = mid;
playRound(b,r);
if (r[x] != r[y])
{
b[x] = b[y] = 0;
if (r[x] > r[y]) return false;
else return true;
}
else if (r[x] > 0) L = mid+1;
else R = mid-1;
}
}
int pp[N];
void allValues(int N, int W, int *p) {
if (W == 2*N) {
// TODO: Implement Subtask 4 solution here.
// You may leave this block unmodified if you are not attempting this
// subtask.
} else {
int n=100;
for (int i=0;n>i;i++)
{
p[i] = i;
}
sort(p,p+n,cmp);
for (int i=0;n>i;i++)
{
pp[ p[i] ] = i;
}
for (int i=0;n>i;i++)
{
p[i] = pp[i]+1;
}
// TODO: Implement Subtask 5 solution here.
// You may leave this block unmodified if you are not attempting this
// subtask.
}
}
Compilation message (stderr)
koala.cpp: In function 'bool cmp(const int&, const int&)':
koala.cpp:99:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
# | 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... |