답안 #55361

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
55361 2018-07-07T05:25:07 Z yp155136 코알라 (APIO17_koala) C++14
37 / 100
79 ms 740 KB
#include "koala.h"
#include <bits/stdc++.h>
using namespace std;

const int N = 105;

int b[N],r[N];

int minValue(int N, int W) {
    // TODO: Implement Subtask 1 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    b[0] = 1;
    playRound(b,r);
    if (r[0] == 0) return 0;
    else
    {
        for(int i=0;N>i;i++)
        {
            if (r[i] == 0) return i;
        }
    }
    return 0;
}

int maxValue(int N, int W) {
    /*int yee = 11;
    for (int i=91;100>i;i++) b[i]=yee;
    playRound(b,r);
    for (int i=0;100>i;i++) cout << r[i] << ' ' ;
    cout << endl;
    for (int i=0;100>i;i++)
    {
        if (r[i] == yee+1) cout << "i = " << i << endl;
    }*/
    vector<int> v;
    for (int i=0;100>i;i++) v.push_back(i);
    int take[4] = {1,2,4,11};
    for (int i=0;4>i;i++)
    {
        memset(b,0,sizeof(b));
        for (int j:v) b[j] = take[i];
        playRound(b,r);
        vector<int> vv;
        for (int j:v)
        {
            if (r[j] == take[i]+1) vv.push_back(j);
        }
        v = vv;
    }
    return v[0];
    // TODO: Implement Subtask 2 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    return 0;
}

int greaterValue(int N, int W) {
    int L=1,R=13;
    while (L <= R)
    {
        int mid=(L+R)>>1;
        memset(b,0,sizeof(b));
        b[0] = mid;
        b[1] = mid;
        playRound(b,r);
        if (r[0] != r[1])
        {
            if (r[0] > r[1]) return 0;
            else return 1;
        }
        else if (r[0] > 0) L = mid+1;
        else R = mid-1;
    }
    // TODO: Implement Subtask 3 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    return 0;
}

bool cmp(const int &x,const int &y)
{
    int L=1,R=13;
    while (L <= R)
    {
        int mid=(L+R)>>1;
        b[x] = mid;
        b[y] = mid;
        playRound(b,r);
        if (r[x] != r[y])
        {
            b[x] = b[y] = 0;
            if (r[x] > r[y]) return false;
            else return true;
        }
        else if (r[x] > 0) L = mid+1;
        else R = mid-1;
    }
}

void allValues(int N, int W, int *p) {
    if (W == 2*N) {
        // TODO: Implement Subtask 4 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
    } else {
        int n=100;
        for (int i=0;n>i;i++)
        {
            p[i] = i;
        }
        sort(p,p+n,cmp);
        // TODO: Implement Subtask 5 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
    }
}

Compilation message

koala.cpp: In function 'bool cmp(const int&, const int&)':
koala.cpp:99:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 248 KB Output is correct
2 Correct 8 ms 484 KB Output is correct
3 Correct 7 ms 484 KB Output is correct
4 Correct 7 ms 484 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 28 ms 484 KB Output is correct
2 Correct 19 ms 500 KB Output is correct
3 Correct 19 ms 564 KB Output is correct
4 Correct 17 ms 564 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 63 ms 692 KB Output is correct
2 Correct 76 ms 720 KB Output is correct
3 Correct 55 ms 720 KB Output is correct
4 Correct 61 ms 720 KB Output is correct
5 Correct 58 ms 720 KB Output is correct
6 Correct 65 ms 720 KB Output is correct
7 Correct 64 ms 720 KB Output is correct
8 Correct 74 ms 740 KB Output is correct
9 Correct 60 ms 740 KB Output is correct
10 Correct 79 ms 740 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 740 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 40 ms 740 KB Output isn't correct
2 Halted 0 ms 0 KB -