Submission #960817

#TimeUsernameProblemLanguageResultExecution timeMemory
960817AlperenT_Koala Game (APIO17_koala)C++14
47 / 100
43 ms736 KiB
#include "koala.h" #include <bits/stdc++.h> #pragma GCC optimize("O3,unroll-loops") #define pb push_back #define F first #define S second #define ld long double #define all(a) a.begin(),a.end() #define pii pair <int,int> #define sz(v) (int)v.size() #define rep(i , a , b) for(int i=a;i <= (b);i++) #define per(i , a , b) for(int i=a;i >= (b);i--) #define deb(x) cout <<#x << " : " << x << "\n" ; using namespace std ; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int maxn = 5e5+10 , maxk = 1e4, sq = 1e5 , lg = 19, inf = 1e9+10 , mod = 31607; int B[maxn] , R[maxn] ; int minValue(int N, int W) { int a[N] , b[N] ; rep(i , 0 , N-2){ a[i] =0 ; } a[N-1] = 1; playRound(a,b) ; rep(i , 0 , N-2){ if(b[i] == 0)return i ; } return N-1 ; } int maxValue(int n, int w) { vector <int> vec; rep(i , 0 , n-1)vec.pb(i) ; while(sz(vec)!=1){ int a[n] , b[n] ; int x =min(13 ,w/sz(vec)) ; rep(i ,0 ,n-1)a[i] = 0; rep(i , 0 , sz(vec)-1){ a[vec[i]] = x; } playRound(a,b) ; vec.clear(); rep(i , 0 , n-1)if(a[i] > 0 && b[i] > a[i])vec.pb(i) ; } return vec[0]; } int greaterValue(int n, int W){ int low=1,high=min(10,W/2); while(low<=high){ int mid=(low+high)/2; int a[n],b[n]; for(int i=0;i<n;i++) a[i]=0; a[0]=a[1]=mid; playRound(a,b); if(b[0]>mid&&b[1]>mid) low=mid+1; else if(b[0]<=mid&&b[1]<=mid) high=mid-1; else return (b[0]>mid?0:1); } return 0; } int n ; bool cmp1(int A ,int B){ int a[n] , b[n]; rep(i , 0 , n-1)a[i] =0 ; a[A] = 100 ; a[B] = 100 ; playRound(a,b); if(b[A] > b[B])return 0 ; return 1 ; } vector <int> mrg(vector <int> vec){ if(sz(vec)==1)return vec; int mid = (sz(vec))/2 ; vector <int> a, b; rep(i, 0 , mid-1){ a.pb(vec[i]) ; } rep(i , mid , sz(vec)-1){ b.pb(vec[i]) ; } a = mrg(a) ; b = mrg(b); vec.clear() ; int i1 =0 , i2= 0 ; while(i1 < sz(a) || i2 < sz(b)){ if(i1 < sz(a) && (i2==sz(b) || cmp1(a[i1] , b[i2]) == 1)){ vec.pb(a[i1]);i1++; }else{ vec.pb(b[i2]);i2++; } } return vec; } void allValues(int N, int W, int *p) { n = N ; if (W == 2*N) { vector <int> vec; rep(i , 0 , n-1)vec.pb(i) ; vec= mrg(vec) ; rep(i , 0 ,n-1){ p[vec[i]]=i+1 ; } } else { // TODO: Implement Subtask 5 solution here. // You may leave this block unmodified if you are not attempting this // subtask. } }
#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...