Submission #75830

#TimeUsernameProblemLanguageResultExecution timeMemory
75830faustaadpKoala Game (APIO17_koala)C++17
100 / 100
69 ms832 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;
}
bool gol (ll aa,ll bb,ll cc,ll dd)
{
    if((cc-bb)>dd)
        return 1;
    while(1)
    {
        if(cc<=dd)return 0;
        ll ii,H=0;
        for(ii=bb;ii>=bb-dd;ii--)
            H+=max(ii,0LL);
        if(H<aa)return 1;
        bb-=(dd+1);
        cc-=(dd+1);
    }

}
ll mc[110];
vector<ll> VC[110];
bool cmp(ll aa,ll bb)
{
    return (VC[aa]>VC[bb]);
}
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;
        vector<ll> v2;
        for(j=N-1;j>=0;j--)
        {
            int TTT=0;
            vector<ll> v;
            for(i=0;i<N;i++)
                if(!sud[i])
                    v.pb(i);
            sort(v.begin(),v.end(),cmp);
            VS=v.size();
            while(VS>=1)
            {
                if(VC[v[VS-1]]!=VC[v[0]])
                {
             //       cout<<"AA";
                    VS--;
                    v.pop_back();
                }
                else
                    break;
            }
            K=1;
            v2.clear();
            memset(mc,0,sizeof(mc));
            while(VS>1)
            {
                vector<ll> vv;
                for(i=0;i<N;i++)
                    a[i]=0;
                K=1;
                for(i=(W/VS);i>=0;i--)
                    if(gol(j+1,j+1-VS,(W-(N-(j+1))),i))
                    {
                        K=i;
                        break;
                    }
                for(i=0;i<VS;i++)
                    a[v[i]]=K;
                TTT++;
                playRound(a,b);
                for(i=0;i<N;i++)
                    if(b[i]>K&&a[i]==K)
                    {
                        vv.pb(i);
                        mc[i]=TTT;
                    }
                v=vv;
                VS=v.size();
            }
            for(i=0;i<N;i++)
                VC[i].pb(mc[i]);
            //cout<<j<<" "<<TTT<<"\n";
            sud[v[0]]=1;
            P[v[0]]=j+1;
        }
       // cout<<TTT<<"\n";
    }
}

Compilation message (stderr)

koala.cpp: In function 'void allValues(int, int, int*)':
koala.cpp:128:14: warning: unused variable 'TTT' [-Wunused-variable]
         ll j,TTT=0;
              ^~~
#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...