Submission #984269

#TimeUsernameProblemLanguageResultExecution timeMemory
984269UnforgettableplKoala Game (APIO17_koala)C++17
77 / 100
40 ms600 KiB
#include <bits/stdc++.h> using namespace std; //#define int long long void playRound(int *B, int *R); int minValue(int N, int W) { int arr[100];fill(arr,arr+100,0); int res[100];fill(res,res+100,0); arr[0] = 1; playRound(arr,res); for(int i=0;i<N;i++)if(res[i]<=arr[i])return i; } int maxValue(int N, int W) { vector<int> poss(N);iota(poss.begin(), poss.end(),0); while(poss.size()>1){ int arr[100];fill(arr,arr+100,0); int res[100];fill(res,res+100,0); int distrib = W/poss.size(); for(int&i:poss)arr[i]=distrib; playRound(arr,res); poss.clear(); for(int i=0;i<N;i++)if(arr[i] and res[i]>arr[i])poss.emplace_back(i); } return poss[0]; } bool lessth(int a,int b,bool second_way=false){ if(second_way){ int arr[100]; fill(arr, arr + 100, 0); int res[100]; fill(res, res + 100, 0); arr[a] = arr[b] = 100; playRound(arr,res); return res[b] > arr[b]; } int lo = 1, hi = 13; while (true) { int mid = (lo + hi) / 2; if(mid>8){hi=mid-1;} int arr[100]; fill(arr, arr + 100, 0); int res[100]; fill(res, res + 100, 0); arr[a] = arr[b] = mid; playRound(arr, res); bool zerogud = res[a] > arr[a]; bool onegud = res[b] > arr[b]; if (zerogud == onegud) { if (zerogud) { lo = mid + 1; } else { hi = mid - 1; } continue; } return onegud; } } int greaterValue(int N, int W) { return lessth(0,1); } void allValues(int N, int W, int *P) { bool second_way = 2*N==W; vector<int> permutation; for(int i=0;i<N;i++){ int x = 0; for(int jump=64;jump;jump/=2){ if(x+jump>permutation.size())continue; if(lessth(permutation[x+jump-1],i,second_way))x+=jump; } permutation.insert(permutation.begin()+x,i); } for(int i=0;i<N;i++){ P[permutation[i]]=i+1; } }

Compilation message (stderr)

koala.cpp: In function 'void allValues(int, int, int*)':
koala.cpp:74:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |             if(x+jump>permutation.size())continue;
      |                ~~~~~~^~~~~~~~~~~~~~~~~~~
koala.cpp: In function 'int minValue(int, int)':
koala.cpp:14:1: warning: control reaches end of non-void function [-Wreturn-type]
   14 | }
      | ^
#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...