답안 #211100

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
211100 2020-03-19T08:24:59 Z DodgeBallMan 도서관 (JOI18_library) C++14
100 / 100
569 ms 384 KB
#include <bits/stdc++.h>
#include "library.h"

using namespace std;
int n;
int ask( vector<int> v ) {
    if( !(int)v.size() ) return 0;
    vector<int> vec(n);
    for( int &x : vec ) x = 0;
    for( int x : v ) vec[x-1] = 1;
    return Query( vec );
}
 
void eras( vector<int> &v, int i ) {
    vector<int>::iterator it;
    for( it = v.begin() ; it != v.end() ; it++ ) if( *it == i ) break;
    v.erase( it );
}
 
void Solve( int n_ ) 
{
    n = n_;
    if( n == 1 ) {
        Answer({1});
        return ;
    }
    vector<int> ans(n);
    vector<int> left;
    for( int i = 1 ; i <= n ; i++ ) left.emplace_back( i );
    for( int i = 1 ; i <= n ; i++ ) {
        vector<int> v;
        for( int j = 1 ; j <= n ; j++ ) if( i != j ) v.emplace_back( j );
        if( ask( v ) == 1 ) {
            ans[0] = i;
            eras( left, i );
            break ;
        }
    }
    for( int i = 1 ; i < n ; i++ ) {
        int l = 0, r = left.size() - 1; 
        while( l < r ) {
            int m = l + r >> 1;
            vector<int> vv;
            for( int j = 0 ; j <= m ; j++ ) vv.emplace_back( left[j] );
            for( int j = 0 ; j < i ; j++ ) vv.emplace_back( ans[j] );  
            int a = vv.size() - ask( vv );
            eras( vv, ans[i-1] );
            int b = vv.size() - ask( vv );
            if( a - b == 2 || ( i == 1 && a-b == 1 ) ) r = m;
            else l = m + 1;
        }
        ans[i] = left[l];
        eras( left, ans[i] );
    }
    Answer( ans );
}

Compilation message

library.cpp: In function 'void Solve(int)':
library.cpp:42:23: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
             int m = l + r >> 1;
                     ~~^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 53 ms 384 KB # of queries: 2387
2 Correct 54 ms 256 KB # of queries: 2433
3 Correct 53 ms 384 KB # of queries: 2638
4 Correct 48 ms 256 KB # of queries: 2593
5 Correct 54 ms 384 KB # of queries: 2504
6 Correct 52 ms 256 KB # of queries: 2553
7 Correct 51 ms 256 KB # of queries: 2568
8 Correct 48 ms 384 KB # of queries: 2402
9 Correct 47 ms 384 KB # of queries: 2512
10 Correct 27 ms 256 KB # of queries: 1478
11 Correct 4 ms 384 KB # of queries: 0
12 Correct 5 ms 384 KB # of queries: 1
13 Correct 4 ms 256 KB # of queries: 4
14 Correct 5 ms 384 KB # of queries: 7
15 Correct 6 ms 384 KB # of queries: 73
16 Correct 9 ms 256 KB # of queries: 187
# 결과 실행 시간 메모리 Grader output
1 Correct 53 ms 384 KB # of queries: 2387
2 Correct 54 ms 256 KB # of queries: 2433
3 Correct 53 ms 384 KB # of queries: 2638
4 Correct 48 ms 256 KB # of queries: 2593
5 Correct 54 ms 384 KB # of queries: 2504
6 Correct 52 ms 256 KB # of queries: 2553
7 Correct 51 ms 256 KB # of queries: 2568
8 Correct 48 ms 384 KB # of queries: 2402
9 Correct 47 ms 384 KB # of queries: 2512
10 Correct 27 ms 256 KB # of queries: 1478
11 Correct 4 ms 384 KB # of queries: 0
12 Correct 5 ms 384 KB # of queries: 1
13 Correct 4 ms 256 KB # of queries: 4
14 Correct 5 ms 384 KB # of queries: 7
15 Correct 6 ms 384 KB # of queries: 73
16 Correct 9 ms 256 KB # of queries: 187
17 Correct 568 ms 256 KB # of queries: 18008
18 Correct 569 ms 384 KB # of queries: 17231
19 Correct 566 ms 256 KB # of queries: 17451
20 Correct 509 ms 256 KB # of queries: 16277
21 Correct 483 ms 384 KB # of queries: 15362
22 Correct 558 ms 256 KB # of queries: 17617
23 Correct 559 ms 256 KB # of queries: 17170
24 Correct 183 ms 384 KB # of queries: 7885
25 Correct 532 ms 256 KB # of queries: 17118
26 Correct 508 ms 384 KB # of queries: 15989
27 Correct 193 ms 256 KB # of queries: 7994
28 Correct 534 ms 384 KB # of queries: 17935
29 Correct 539 ms 256 KB # of queries: 17915
30 Correct 545 ms 256 KB # of queries: 17935