Submission #75816

#TimeUsernameProblemLanguageResultExecution timeMemory
75816faustaadpKoala Game (APIO17_koala)C++17
79 / 100
63 ms944 KiB
#include "koala.h"
#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
ll i;
int minValue(int N, int W) {
    int a[110],b[110];
    for(i=0;i<N;i++)
        a[i]=0;
    a[0]=1;
    playRound(a,b);
    for(i=0;i<N;i++)
        if(b[i]==0)
            return i;
    return 0;
}

int maxValue(int N, int W) {
    ll VS,K;
    int a[110],b[110];
    vector<ll> v;
    for(i=0;i<N;i++)
        v.pb(i);
    VS=N;
    K=1;
    while(VS>1)
    {
        vector<ll> vv;
        for(i=0;i<N;i++)
            a[i]=0;
        K=W/VS;
        for(i=0;i<VS;i++)
            a[v[i]]=K;
        playRound(a,b);
        for(i=0;i<N;i++)
            if(b[i]>K)
                vv.pb(i);
        v=vv;
        VS=v.size();
    }
    return v[0];
}
ll L,R,C;
int greaterValue(int N, int W) {
    int a[110],b[110];
    for(i=0;i<N;i++)
        a[i]=0;
    L=1;
    R=min(14,N/2);
    while(L<=R)
    {
        C=(L+R)/2;
        a[0]=C;
        a[1]=C;
        playRound(a,b);
        //cout<<i<<" "<<b[0]<<" "<<b[1]<<"\n";
        if(b[0]>b[1])return 0;
        if(b[0]<b[1])return 1;
        if(b[0]>C)L=C+1;
        else   R=C-1;
    }
    return 0;
}

void allValues(int N, int W, int *P) {
    if (W == 2*N) {
        ll VS,K;
        int a[110],b[110],sud[110];
        for(i=0;i<N;i++)
            sud[i]=0;
        ll j;
        for(j=N-1;j>=0;j--)
        {
            vector<ll> v;
            for(i=0;i<N;i++)
                if(!sud[i])
                    v.pb(i);
            VS=j+1;
            K=2;
            while(VS>1)
            {
                vector<ll> vv;
                for(i=0;i<N;i++)
                    a[i]=0;
                K=W/VS;
                for(i=0;i<VS;i++)
                    a[v[i]]=K;
                playRound(a,b);
                for(i=0;i<N;i++)
                    if(b[i]>K&&a[i]==K)
                        vv.pb(i);
                v=vv;
                VS=v.size();
            }
            sud[v[0]]=1;
            P[v[0]]=j+1;
        }
    } else {
        ll VS,K;
        int a[110],b[110],sud[110];
        for(i=0;i<N;i++)
            sud[i]=0;
        ll j,TTT=0;
        for(j=N-1;j>=0;j--)
        {
            vector<ll> v;
            for(i=0;i<N;i++)
                if(!sud[i])
                    v.pb(i);
            VS=j+1;
            K=1;
            while(VS>1)
            {
                vector<ll> vv;
                for(i=0;i<N;i++)
                    a[i]=0;
                //K=1;
                //K=(W-VS)/VS+1;
                //K=min(K,W/VS);
                for(i=0;i<VS;i++)
                    a[v[i]]=K;
                //cout<<j<<" "<<VS<<" "<<K<<"\n";
                if(W-(N-j-1)<=K)
                {
                    K--;
                    continue;
                }
                playRound(a,b);
                for(i=0;i<N;i++)
                    if(b[i]>K&&a[i]==K)
                        vv.pb(i);
                if(vv.empty())
                {
                 //   cout<<j<<"\n";
                    TTT++;
                    K--;
                    continue;
                }

                K=N/VS;

                //cout<<K<<"\n";
                v=vv;
                VS=v.size();
            }
            if(VS==0)
            {
                cout<<"ADUIUIDUSUSDUI\n\n\n\n\nASDJISDIH\n";
            }
            sud[v[0]]=1;
            P[v[0]]=j+1;
        }
       // cout<<TTT<<"\n";
    }
}
#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...