제출 #1336704

#제출 시각아이디문제언어결과실행 시간메모리
1336704mayac코알라 (APIO17_koala)C++20
4 / 100
1076 ms432 KiB
#include <iostream>
#include <vector>
#include "koala.h"
using namespace std;


int minValue(int N, int W) {
    int B[100],R[100];
    for(int i=0;i<N;i++)B[i]=0;
    B[0]=1;
    playRound(B,R);
    for(int i=0;i<N;i++){
        if(R[i]==0)return i;
    }
}

int maxValue(int N, int W) {
    int B[100],R[100];
    vector<int> v;
    for(int i=0;i<N;i++)v.push_back(i);
    while(v.size()>1){
        for(int i=0;i<N;i++)B[i]=0;
        for(int i:v)B[i]=min(13,int(100/v.size()));
        vector<int> t;
        for(int i=0;i<N;i++){
            if(B[i]>0&&R[i]>B[i])t.push_back(i);
        }
        v=t;
        
    }
    
    return v[0];
}

int greaterValue(int N, int W) {
    int B[100],R[100];
    for(int i=0;i<N;i++)B[i]=0;
    B[0]=1;B[1]=1;
    playRound(B,R);
    while(!((R[0]>1&&R[1]<2)||(R[0]<2&&R[1])>1)){
        for(int i=2;i<N;i++)B[i]=R[i];
        playRound(B,R);
    }
    if(R[1]>R[0])return 1;
    return 0;
}

bool greaterV(int N, int W) {
    int B[100],R[100];
    for(int i=0;i<N;i++)B[i]=0;
    B[0]=1;B[1]=1;
    playRound(B,R);
    while(!((R[0]>1&&R[1]<2)||(R[0]<2&&R[1])>1)){
        for(int i=2;i<N;i++)B[i]=R[i];
        playRound(B,R);
    }
    if(R[1]>R[0])return 1;
    return 0;
}

bool great(int i,int j){
    int B[100],R[100];
    for(int t=0;t<100;t++)B[t]=0;
    B[i]=100;B[j]=100;
    playRound(B,R);
    if(R[j]==101)return true;
    return false;
}

void sort1(vector<int> &v,int b,int e){
    if(e-b==1)return;
    int mid=(e+b)/2;
    vector<int> tmp(e-b);
    sort1(v,b,mid);sort1(v,mid,e);
    int i=b,j=mid;
    for(int t=0;t<e-b;t++){
        if(j==e||(i<mid&&great(i,j))){
            tmp[t]=v[i];
            i++;
        }else{
            tmp[t]=v[j];
            j++;
        }
    }
    for(int i=0;i<e-b;i++)v[i+b]=tmp[i];
}

int maxValue2(int N, int W,vector<int> &v) {
    int B[100],R[100];
    int magic_number=1;
    while(magic_number*(magic_number)/2<N)magic_number++;
    while(v.size()>1){
        for(int i=0;i<100;i++)B[i]=0;
        for(int i:v)B[i]=min(magic_number,int(N/v.size()));
        playRound(B,R);
        vector<int> t;
        for(int i=0;i<100;i++){
            if(B[i]>0&&R[i]>B[i])t.push_back(i);
        }
        v=t;
        
    }
    return v[0];
}

void allValues(int N, int W, int *P) {
    if (W == 2*N) {
       vector<int> v(N);
       for(int i=0;i<N;i++)v[i]=i;
       sort1(v,0,N);
        for(int i=0;i<N;i++)P[v[i]]=i+1;
    } else {
        for(int i=0;i<N;i++)P[i]=1;
        for(int t=N;t>1;t--){
            vector<int> v;
            for(int i=0;i<N;i++){
                if(P[i]==1)v.push_back(i);
            }
            int i=maxValue2(t,W,v);
            P[i]=t;
        }
    }
}

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

koala.cpp: In function 'int minValue(int, int)':
koala.cpp:15:1: warning: control reaches end of non-void function [-Wreturn-type]
   15 | }
      | ^
#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...