Submission #1090105

#TimeUsernameProblemLanguageResultExecution timeMemory
1090105alexander707070Koala Game (APIO17_koala)C++14
37 / 100
48 ms472 KiB
#include<bits/stdc++.h> #define MAXN 107 #include "koala.h" using namespace std; int b[MAXN],r[MAXN]; 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; } return 0; } vector<int> can,best; void reset(){ best.clear(); can.clear(); for(int i=0;i<100;i++)b[i]=0; } int maxValue(int N, int W) { reset(); for(int i=0;i<100;i++)can.push_back(i); while(can.size()>1){ for(int i=0;i<100;i++)b[i]=0; for(int i:can){ b[i]=W/int(can.size()); } playRound(b,r); for(int i:can){ if(r[i]>b[i])best.push_back(i); } can=best; best={}; } return can[0]; } int from[MAXN],to[MAXN]; bool compare(int x,int y){ for(int i=0;i<100;i++)b[i]=0; int ll=0,rr=10,tt; while(ll+1<rr){ tt=(ll+rr)/2; b[x]=b[y]=tt; playRound(b,r); if(r[x]<=tt and r[y]<=tt){ rr=tt; }else if(r[x]>tt and r[y]>tt){ ll=tt; }else{ if(r[x]>=tt)return false; else return true; } } return false; } int greaterValue(int N, int W) { if(compare(0,1))return 1; else return 0; } int ans[107][107]; int calc(int l,int r){ if(ans[l][r]!=0){ ans[l][r]++; return ans[l][r]; } int rest=(r-l+1); for(int i=1;i<=100/(r-l+1);i++){ int z=rest/(i+1); if(z>=r-l+1)continue; rest%=(i+1); int curr=r-z,rem=0,pt=1; while(rest<i+1 and rem<curr and pt<l){ rem+=pt; pt++; rest++; if(rem<=curr and rest==i+1){ rest=0; curr--; rem=0; z++; } } if(z>=r-l+1)continue; ans[l][r]=i; return i; } } vector<int> solve(vector<int> w,int mins){ if(w.size()<=1)return w; int pivot=calc(mins,mins+w.size()-1); for(int i=0;i<100;i++)b[i]=0; for(int i:w)b[i]=pivot; playRound(b,r); vector<int> ll,rr; for(int i:w){ if(r[i]>pivot){ rr.push_back(i); }else{ ll.push_back(i); } } ll=solve(ll,mins); rr=solve(rr,mins+ll.size()); vector<int> res; for(int i:ll)res.push_back(i); for(int i:rr)res.push_back(i); return res; } vector<int> s; void allValues(int N, int W, int *P) { s={}; for(int i=0;i<100;i++){ s.push_back(i); } solve(s,1); for(int i=0;i<N;i++){ P[s[i]]=i+1; } }

Compilation message (stderr)

koala.cpp: In function 'int calc(int, int)':
koala.cpp:110:1: warning: control reaches end of non-void function [-Wreturn-type]
  110 | }
      | ^
#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...