Submission #745566

#TimeUsernameProblemLanguageResultExecution timeMemory
745566groguKoala Game (APIO17_koala)C++14
37 / 100
83 ms1144 KiB
#include "koala.h" #define here cerr<<"===========================================\n" #define dbg(x) cerr<<#x<<": "<<x<<endl; #include <bits/stdc++.h> #define ld double #define ll long long #define ull unsigned long long #define llinf 100000000000000000LL // 10^17 #define iinf 2000000000 // 2*10^9 #define pb push_back #define popb pop_back #define fi first #define sc second #define endl '\n' #define pii pair<int,int> #define pll pair<ll,ll> #define pld pair<ld,ld> #define all(a) a.begin(),a.end() #define ceri(a,l,r) {cerr<<#a<<": ";for(ll i_ = l;i_<=r;i_++) cerr<<a[i_]<< " ";cerr<<endl;} #define cer(a) {cerr<<#a<<": ";for(ll x_ : a) cerr<<x_<< " ";cerr<<endl;} using namespace std; int B[100]; int R[100]; int minValue(int N, int W){ B[0] = 1; for(int i=1;i<=99;i++){ B[i] = 0; } playRound(B,R); for(int i=0;i<=99;i++){ if(R[i]==0){ return i; } } return 0; } int maxValue(int N, int W){ vector<int> curr; for(int i=0;i<=99;i++){ curr.push_back(i); } while(curr.size()>1){ for(int i=0;i<=99;i++){ B[i] = 0; } int cnt = 100/curr.size(); for(int i:curr){ B[i] = cnt; } playRound(B,R); vector<int> curr2; for(int i:curr){ if(R[i]>B[i]){ curr2.push_back(i); } } curr = curr2; } return curr[0]; } int greaterValue(int N, int W){ int low=0,high=6; vector<int> v = {1,2,3,4,5,6,8}; while(1){ int mid = (low+high)/2; for(int i=0;i<=99;i++){ B[i] = 0; } B[0] = v[mid]; B[1] = v[mid]; playRound(B,R); if(R[0]>B[0] and R[1]>B[1]){ low = mid+1; } else if(R[0]<=B[0] and R[1]<=B[1]){ high = mid-1; } else if(R[0]>B[0]){ return 0; } else{ return 1; } } return 0; } void reshi(vector<ll> v,int n,int w,int *ans,int l,int r){ if(l==r) ans[v[0]] = l; else{ int len = r-l+1; int c = (w-n+r-1+len-1)/(len); c = min(c,r-1); c = min(c,w/len); //dbg(c); for(ll i = 0;i<100;i++) B[i] = 0; for(ll x : v) B[x] = c; playRound(B,R); vector<ll> le,gr; for(ll x : v){ if(R[x]>c) gr.pb(x); else le.pb(x); } reshi(le,n,w,ans,l,l+le.size()-1); reshi(gr,n,w,ans,r-gr.size()+1,r); } } void allValues(int N, int W, int *P) { vector<ll> v(N); iota(all(v),0); reshi(v,N,W,P,1,N); return; } /** 4 1 6 6 5 3 2 1 6 4 **/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...