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 <bits/stdc++.h>
#include "koala.h"
// #pragma GCC optimize("Ofast")
// #pragma GCC target("avx2")
// #pragma GCC optimization ("O3")
// #pragma GCC optimization ("unroll-loops")
// #pragma GCC target("popcnt")
using namespace std;
using ll = long long;
using ull = unsigned long long;
using lld = long double;
using vi = vector<int>;
using vll = vector<ll>;
using ii = pair<int,int>;
using pll = pair<ll, ll>;
using vii = vector<ii>;
using vpll = vector<pll>;
#define endl '\n'
#define all(x) x.begin(),x.end()
#define lsb(x) x&(-x)
#define gcd(a,b) __gcd(a,b)
#define sz(x) (int)x.size()
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define fls cout.flush()
#define fore(i,l,r) for(auto i=l;i<r;i++)
#define fo(i,n) fore(i,0,n)
#define forex(i,r,l) for(auto i=r; i>=l;i--)
#define ffo(i,n) forex(i,n-1,0)
bool cmin(int &a, int b){if(b<a){a=b;return 1;}return 0;}
bool cmax(int &a, int b){if(b>a){a=b;return 1;}return 0;}
void valid(ll in){cout<<((in)?"YES\n":"NO\n");}
ll lcm(ll a, ll b){return (a/gcd(a,b))*b;}
ll gauss(ll n){return (n*(n+1))/2;}
const int N = 100;
int B[N], R[N], WW;
int minValue(int N, int W) {
fo(i,N)B[i]=0,R[i]=0;
fo(i,N){
B[i]=1;
playRound(B,R);
int mx=0;
fo(j,N)mx = max(mx, R[j]);
fo(j,N)if(R[j]==0)return j;
if(mx==1)return i;
assert(0);
B[i]=0;
}
return 0;
}
int maxValue(int N, int W) {
fo(i,N)B[i]=R[i]=0;
fo(i,N)B[i]=1;
playRound(B,R);
fo(i,N)B[i]=0;
fo(i,N)if(R[i]>1)B[i]=2;
fo(i,N)R[i]=0;
playRound(B,R);
fo(i,N)B[i]=0;
fo(i,N)if(R[i]>2)B[i]=4;
fo(i,N)R[i]=0;
playRound(B,R);
fo(i,N)B[i]=0;
fo(i,N)if(R[i]>4)B[i]=11;
fo(i,N)R[i]=0;
playRound(B,R);
fo(i,N)if(R[i]>11)return i;
// return ans;
}
int greaterValue2(int N, int W, int x, int y) {
int l=1,r=10;
while(l<=r){
int m=(l+r)/2;
fo(i,N)B[i]=R[i]=0;
B[x]=B[y]=m;
playRound(B, R);
if(R[x]>m&&R[y]<=m)return 0;
if(R[y]>m&&R[x]<=m)return 1;
if(R[x]>m&&R[y]>m)l=m+1;
else r=m-1;
}
assert(0);
return 0;
}
int greaterValue(int N, int W){
return greaterValue2(N,W,0,1);
}
bool ord(int i, int j){
return greaterValue2(N,WW,i,j);
}
void allValues(int N, int W, int *P) {
WW=W;
// if (W == 2*N) {
int xd[N];
fo(i,N)xd[i]=i;
sort(xd,xd+N,ord);
fo(i,N)P[xd[i]]=i+1;
// } else {
// TODO: Implement Subtask 5 solution here.
// You may leave this block unmodified if you are not attempting this
// subtask.
// }
}
// void test_case(){
// cin >> N >> W;
// int B[N], R[N];
// fo(i,N)B[i]=R[i]=0;
// fo(i,N)P[i]=i+1;
// fore(i,91,N)B[i]=16;
// playRound(B,R);
// fo(i,N)cout<<R[i]<<" ";
// cout<<endl;
// }
// int main(){cin.tie(0)->sync_with_stdio(0);
// int t=1;
// // cin >> t;
// while(t--)test_case();
// }
Compilation message (stderr)
koala.cpp: In function 'int maxValue(int, int)':
koala.cpp:75:1: warning: control reaches end of non-void function [-Wreturn-type]
75 | }
| ^
# | 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... |