제출 #745034

#제출 시각아이디문제언어결과실행 시간메모리
745034TrunktyKoala Game (APIO17_koala)C++14
93 / 100
60 ms444 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; //#define int ll #include "koala.h" int B[100],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; } int n,w; int arr[100]; void dosplit(vector<int> x, int l, int r){ if(x.size()==1){ arr[x[0]] = l; return; } int low=1,high=w/(r-l+1); while(1){ int mid=(low+high)/2; for(int i=0;i<=n-1;i++){ B[i] = 0; } for(int i:x){ B[i] = mid; } playRound(B,R); vector<int> x1,x2; for(int i:x){ if(R[i]>B[i]){ x2.push_back(i); } else{ x1.push_back(i); } } if(x1.size()>0 and x2.size()>0){ dosplit(x1,l,l+x1.size()-1); dosplit(x2,r-x2.size()+1,r); break; } else if(x1.size()>0){ high = mid-1; } else{ low = mid+1; } } } void allValues(int N, int W, int *P){ n = N; w = W; if(W==2*N){ vector<int> v; for(int i=0;i<N;i++){ v.push_back(i); } dosplit(v,1,N); for(int i=0;i<N;i++){ P[i] = arr[i]; } } else{ vector<int> v; for(int i=0;i<N;i++){ v.push_back(i); } dosplit(v,1,N); for(int i=0;i<N;i++){ P[i] = arr[i]; } } }
#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...