Submission #919304

#TimeUsernameProblemLanguageResultExecution timeMemory
919304vnm06Koala Game (APIO17_koala)C++14
47 / 100
86 ms728 KiB
#include<bits/stdc++.h> #include "koala.h" using namespace std; int minValue(int N, int W) { int B[105], R[105]; for(int i=0; i<N; i++) B[i]=R[i]=0; B[0]=1; playRound(B, R); for(int i=1; i<N; i++) if(!R[i]) return i; return 0; } int maxValue(int N, int W) { vector<int> pos, pos2; pos.resize(N); for(int i=0; i<N; i++) pos[i]=i; int B[105], R[105]; for(int i=0; i<N; i++) B[i]=R[i]=0; while(pos.size()>1) { int k=pos.size(), v=W/k; for(int i=0; i<N; i++) B[i]=R[i]=0; for(int i=0; i<k; i++) B[pos[i]]=v; playRound(B, R); pos2.resize(0); for(int i=0; i<k; i++) { if(R[pos[i]]>B[pos[i]]) pos2.push_back(pos[i]); } pos.resize(pos2.size()); for(int i=0; i<pos.size(); i++) pos[i]=pos2[i]; } // TODO: Implement Subtask 2 solution here. // You may leave this function unmodified if you are not attempting this // subtask. return pos[0]; } int greaterValue(int N, int W) { int B[105], R[105]; for(int i=0; i<N; i++) B[i]=R[i]=0; int le=0, ri=13; while(ri-le>1) { int mid=(le+ri)/2; B[0]=B[1]=mid; playRound(B, R); if(R[0]<=B[0] && R[1]<=B[1]) ri=mid; else if(R[0]>B[1] && R[1]>B[1]) le=mid; else return R[0]<R[1]; } // TODO: Implement Subtask 3 solution here. // You may leave this function unmodified if you are not attempting this // subtask. return 0; } void allValues(int N, int W, int *P) { int B[105], R[105]; for(int i=0; i<N; i++) B[i]=R[i]=0; int ord[105]; int gr[105]; for(int i=0; i<N; i++) { ord[i]=i; gr[i]=0; } int lst=0; while(1) { int i; for(i=0; i<N-1; i++) { ///cout<<gr[i]<<" "; if(!gr[i]) break; } ///for(int i=0; i<N; i++) cout<<ord[i]<<" "; ///cout<<endl; if(i==N-1) break; int le=i; int ri=i; while(ri+1<N-1 && !gr[ri+1]) ri++; ri++; int br=ri-le+1, v=(W-le)/br; ///cout<<" "<<le<<" "<<ri<<endl; /// cout<<"t"<<v<<endl; if(v>lst+1) v=lst+1; ///cout<<v<<endl; for(int i=0; i<N; i++) B[i]=0; for(int j=le; j<=ri; j++) B[ord[j]]=v; playRound(B, R); for(int j=le; j<=ri; j++) { if(B[ord[j]]<R[ord[j]]) { /// cout<<j<<" "<<le<<endl; swap(ord[j], ord[le]); le++; } } gr[le-1]=1; lst=v; /// cout<<lst<<"Smqna"<<" "<<le-1<<endl; } for(int i=0; i<N; i++) P[ord[i]]=N-i; }

Compilation message (stderr)

koala.cpp: In function 'int maxValue(int, int)':
koala.cpp:33:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |         for(int i=0; i<pos.size(); i++) pos[i]=pos2[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...