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;
typedef long long ll;
typedef double D;
typedef pair<ll,ll> P;
typedef pair<ll,P> T;
#define M 1000000007
#define F first
#define S second
#define PB push_back
#define INF 1000000001
int n,b[105],r[105];
void ini(void){
for(int i=0;i<n;i++)b[i]=0;
}
int minValue(int N, int w) {
n=N;
ini();
b[0]=1;
playRound(b,r);
for(int i=0;i<n;i++)if(b[i]>=r[i])return i;
}
int maxValue(int N,int w) {
n=N;
vector<int>res;
for(int i=0;i<n;i++)res.PB(i);
while(res.size()>1){
ini();
for(int i=0;i<res.size();i++)b[res[i]]=w/res.size();
playRound(b,r);
res.clear();
for(int i=0;i<n;i++)if(b[i]>0&&b[i]<r[i])res.PB(i);
}
return res[0];
}
int greaterValue(int N, int w) {
n=N;
ini();
b[0]=4,b[1]=4;
playRound(b,r);
if(b[0]<r[0]){
if(b[1]>=r[1])return 0;
b[0]=7,b[1]=7;
playRound(b,r);
if(b[0]<r[0]&&b[1]<r[1]){
b[0]=8,b[1]=8;
playRound(b,r);
}
if(b[0]<r[0])return 0;
else return 1;
}else if(b[1]<r[1])return 1;
else{
b[0]=2,b[1]=2;
playRound(b,r);
if(b[0]>=r[0]&&b[1]>=r[1]){
b[0]=1,b[1]=1;
playRound(b,r);
}
if(b[0]<r[0])return 0;
else return 1;
}
}
bool grt(int x,int y){
ini();
b[x]=100,b[y]=100;
playRound(b,r);
return b[x]>=r[x];
}
vector<int> mrg(vector<int>x,vector<int>y){
vector<int>res;
int a=0,b=0;
while(a<x.size()&&b<y.size()){
if(grt(x[a],y[b]))res.PB(x[a++]);
else res.PB(y[b++]);
}
while(a<x.size())res.PB(x[a++]);
while(b<y.size())res.PB(y[b++]);
return res;
}
void allValues(int N, int w, int *p) {
n=N;
if(w==2*n){
vector<vector<int>>res;
for(int i=0;i<n;i++)res.PB(vector<int>{i});
while(res.size()>1){
vector<vector<int>>nw;
for(int i=0;i+1<res.size();i++){
nw.PB(mrg(res[i],res[i+1]));
}
if(res.size()%2==1)nw.PB(res.back());
res.clear();
res.insert(res.begin(),nw.begin(),nw.end());
}
for(int i=0;i<n;i++)p[res[0][i]]=i+1;
}else{
// 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 'int maxValue(int, int)':
koala.cpp:31:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<res.size();i++)b[res[i]]=w/res.size();
~^~~~~~~~~~~
koala.cpp: In function 'std::vector<int> mrg(std::vector<int>, std::vector<int>)':
koala.cpp:75:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(a<x.size()&&b<y.size()){
~^~~~~~~~~
koala.cpp:75:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(a<x.size()&&b<y.size()){
~^~~~~~~~~
koala.cpp:79:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(a<x.size())res.PB(x[a++]);
~^~~~~~~~~
koala.cpp:80:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(b<y.size())res.PB(y[b++]);
~^~~~~~~~~
koala.cpp: In function 'void allValues(int, int, int*)':
koala.cpp:90:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i+1<res.size();i++){
~~~^~~~~~~~~~~
koala.cpp: In function 'int minValue(int, int)':
koala.cpp:23: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... |