2013年8月26日 星期一

2013/8/26 HSNU OJ 118 猜數字

// http://hoj.twbbs.org/judge/problem/view/118
#include <cstdio>
#include "interactive/118.h"
using namespace std;
int ans[101]; int guess[101];int n; int now;
int find(int l, int r)
{
    if( l + 1  ==  r ) return l;
    int m = (l+r)/2;

    for(int i = 1; i <= n; i++) guess[i]  = 0;
    for(int i = l; i < m; i++) guess[i] = now;

    for(int i = 1; i <= n; i++)
        if( ans[i] != -1 )
            guess[i] = ans[i];

    if( Answer(guess) == now )
        return find(l, m);
    else
        return find(m, r);
}
int main()
{
    n = Init();
    now = 1;
    for(int i = 1; i <= n; i++)
        ans[i] = -1;
    while( now <= n )
    {
        ans[find(1, n+1)] = now;
        now++;
    }
    Answer(ans);
}

沒有留言:

張貼留言