# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
201002 | 2020-02-09T04:49:32 Z | Nordway | Koala Game (APIO17_koala) | C++14 | 0 ms | 0 KB |
#include<bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include "koala.h" #define x first #define y second #define pb push_back #define mp make_pair #define all(v) v.begin(),v.end() #define sz(v) (int)v.size() #define up_b upper_bound #define low_b lower_bound #define nl '\n' using namespace std; using namespace __gnu_pbds; typedef long long ll; typedef long double ld; typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>ordered_set; int b[100],r[100]; int minValue(int n,int w){ b[0]=1; playRound(b,r); for(int i=0;i<n;i++){ if(r[i]==0)return i; } } int maxValue(int n,int w){ vector<int>v; for(int i=0;i<n;i++)v.pb(i); while(sz(v)>1){ int k=w/sz(v); for(int i=0;i<n;i++)b[i]=0; for(int i:v)b[i]=k; v.clear(); playRound(b,r); for(int i=0;i<n;i++) if(r[i]>k)v.pb(i); } return v[0]; } int greaterValue(int n,int w){ int L=1,R=8; while(L<=R){ int m=(L+R)/2; b[0]=m; b[1]=m; playRound(b,r); bool f=(r[0]>b[0]),s=(r[1]>b[1]); if(f!=s){ if(f)return 0; if(s)return 1; } if(f==0)R=m; else L=m+1; } } void allValues(int n,int w,int *p){ return 0; }