제출 #75827

#제출 시각아이디문제언어결과실행 시간메모리
75827faustaadp코알라 (APIO17_koala)C++17
92 / 100
67 ms828 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);
    }

}
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;
            if(v2.empty())
            {
                for(i=0;i<N;i++)
                    if(!sud[i])
                        v.pb(i);
            }
            else
            {
                for(i=0;i<v2.size();i++)
                    if(!sud[v2[i]])
                        v.pb(v2[i]);
            }
            VS=v.size();
            K=1;
            v2.clear();
            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;
          //      cout<<j<<" "<<VS<<" "<<K<<"\n";
                TTT++;
                playRound(a,b);
                for(i=0;i<N;i++)
                    if(b[i]>K&&a[i]==K)
                        vv.pb(i);
                v=vv;
                VS=v.size();
                if(VS>1)
                {
                    v2=v;
                }
            }
            //cout<<j<<" "<<TTT<<"\n";
            sud[v[0]]=1;
            P[v[0]]=j+1;
        }
       // cout<<TTT<<"\n";
    }
}

컴파일 시 표준 에러 (stderr) 메시지

koala.cpp: In function 'void allValues(int, int, int*)':
koala.cpp:136:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 for(i=0;i<v2.size();i++)
                         ~^~~~~~~~~~
koala.cpp:122: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...