Submission #1174402


Source Code Expand

#include <bits/stdc++.h>
#define rep(i, a, n) for(int i = a; i < n; i++)
#define repb(i, a, b) for(int i = a; i >= b; i--)
#define all(a) a.begin(), a.end()
#define o(a) cout << a << endl
// #define int long long
#define fi first
#define se second
using namespace std;
typedef pair<int, int> P;

int n = 8, d, t;
int c[8], a[8];
const int INF = 1e7;


void InitRandom(){
    int now=time(0);
    srand(now);
}

int bitnum(int n){
    int ret = 0;
    while(n > 0){
        ret += (n & 1); n >>= 1;
    }
    return ret;
}

int cnt = -1;
int dp[1024];
int pre[1010];
vector<int> path;
vector<int> sell;
P mov;

void pass(){
    // if(rand() % 100 == 1){
    //     cout << "fill " << rand() % 8 + 1 << endl;
    // }
    // else{
        cout << "pass" << endl;
        cnt = -1;
    // }
}

void think(){
    if(cnt == -1){
        int MIN = INF, minMask = -1, minMask2 = -1;
        for(int mask = 0; mask < (1 <<8); mask++){
            for(int mask2 = 0; mask2 < (1 << 8); mask2++){
                int sum = 0;
                bool f = true;
                rep(i, 0, n){
                    if(mask & (1 << i) && mask2 & (1 << i)) f = false;
                }
                if(!f) continue;
                rep(i, 0, n){
                    if(mask & (1 << i)){
                        sum += c[i];
                    }
                    if(mask2 & (1 << i)){
                        sum += a[i];
                    }
                }
                if(sum == d && bitnum(mask) < MIN){
                    MIN = bitnum(mask);
                    minMask = mask;
                    minMask2 = mask2;
                }
            }
        }
        sell.clear();
        path.clear();        
        rep(i, 0, n){
            rep(j, 0, n){
                if(i == j) continue;
                if(a[i] == 0 && a[j] == 0) continue;
                if(a[i] != 0){
                    if(a[i] < c[j]) continue;
                    if(c[j] == d || a[i] - c[j] == d){
                        mov.fi = i;
                        mov.se = j;
                        a[j] = c[j];
                        a[i] -= c[j];
                        if(c[j] == d) sell. push_back(j);
                        else sell. push_back(i);
                    }
                }else{
                    if(a[j] < c[i]) continue;
                    if(c[i] == d || a[j] - c[i] == d){
                        a[i] = c[i];
                        a[j] -= c[i];
                        mov.fi = j;
                        mov.se = i;
                        if(c[i] == d) sell. push_back(i);
                        else sell. push_back(j);
                    }
                }
                if(sell.size() == 1){
                    break;
                    i = n;
                }
            }
        }
        if(sell.size() == 1 && t >= 2){
            cout << "move " << mov.fi + 1<< " " << mov.se + 1<< endl;
            cnt = INF;
            return ;
        }
        sell.clear();
        if(MIN == INF){
            pass();
            return;
        }
        rep(i, 0, n){
            if(minMask & (1 << i)){
                path. push_back(i);
            }
        }
        rep(i, 0, n){
            if(minMask & (1 << i) || minMask2 & (1 << i)){
                sell. push_back(i);
            } 
        }
        if(path.size() >= t){
            pass();
            return;
        }
        // if(path.size() > 5){
        //     cout << "pass" << endl;
        //     cnt = -1;
        //     return;
        // }
        cnt = 0;
        // rep(i, 0, path.size()){
        //     cout << path[i] << endl;
        // }
    }
    if(cnt < path.size()){
        cout << "fill " << path[cnt] + 1 << endl;
        cnt++;
    }else{
        cout <<  "sell " << sell.size() << " ";
        rep(i, 0, sell.size()){
            cout << sell[i] + 1;
            if(i != sell.size() - 1) cout << " ";
        }
        cout << endl;
        cnt = -1;
    }
}

signed main(){
    InitRandom();
    rep(it, 0, 1000){
        cin >> d >> t;
        rep(i, 0, n) cin >> c[i];
        rep(i, 0, n) cin >> a[i];
        if(d < 30) cout << "pass" << endl;
        else think();
    }
}

Submission Info

Submission Time
Task A - 石油王Xの憂鬱
User treeone
Language C++14 (GCC 5.4.1)
Score 447376
Code Size 4353 Byte
Status AC
Exec Time 466 ms
Memory 724 KB

Judge Result

Set Name test_01 test_02 test_03 test_04 test_05 test_06 test_07 test_08 test_09 test_10 test_11 test_12 test_13 test_14 test_15 test_16 test_17 test_18 test_19 test_20 test_21 test_22 test_23 test_24 test_25 test_26 test_27 test_28 test_29 test_30 test_31 test_32 test_33 test_34 test_35 test_36 test_37 test_38 test_39 test_40 test_41 test_42 test_43 test_44 test_45 test_46 test_47 test_48 test_49 test_50
Score / Max Score 5585 / 417500 13952 / 417500 2677 / 417500 16727 / 417500 27295 / 417500 10630 / 417500 16677 / 417500 9837 / 417500 11360 / 417500 12835 / 417500 19117 / 417500 6550 / 417500 22702 / 417500 18072 / 417500 12340 / 417500 23264 / 417500 3589 / 417500 2180 / 417500 27731 / 417500 3724 / 417500 4121 / 417500 3506 / 417500 961 / 417500 10793 / 417500 11999 / 417500 0 / 417500 2056 / 417500 0 / 417500 11623 / 417500 4169 / 417500 7187 / 417500 8055 / 417500 3092 / 417500 0 / 417500 1369 / 417500 6913 / 417500 4410 / 417500 19800 / 417500 12776 / 417500 6993 / 417500 961 / 417500 1089 / 417500 6221 / 417500 3285 / 417500 2344 / 417500 6115 / 417500 17441 / 417500 5010 / 417500 7028 / 417500 11215 / 417500
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
test_01 subtask_01_01.txt
test_02 subtask_01_02.txt
test_03 subtask_01_03.txt
test_04 subtask_01_04.txt
test_05 subtask_01_05.txt
test_06 subtask_01_06.txt
test_07 subtask_01_07.txt
test_08 subtask_01_08.txt
test_09 subtask_01_09.txt
test_10 subtask_01_10.txt
test_11 subtask_01_11.txt
test_12 subtask_01_12.txt
test_13 subtask_01_13.txt
test_14 subtask_01_14.txt
test_15 subtask_01_15.txt
test_16 subtask_01_16.txt
test_17 subtask_01_17.txt
test_18 subtask_01_18.txt
test_19 subtask_01_19.txt
test_20 subtask_01_20.txt
test_21 subtask_01_21.txt
test_22 subtask_01_22.txt
test_23 subtask_01_23.txt
test_24 subtask_01_24.txt
test_25 subtask_01_25.txt
test_26 subtask_01_26.txt
test_27 subtask_01_27.txt
test_28 subtask_01_28.txt
test_29 subtask_01_29.txt
test_30 subtask_01_30.txt
test_31 subtask_01_31.txt
test_32 subtask_01_32.txt
test_33 subtask_01_33.txt
test_34 subtask_01_34.txt
test_35 subtask_01_35.txt
test_36 subtask_01_36.txt
test_37 subtask_01_37.txt
test_38 subtask_01_38.txt
test_39 subtask_01_39.txt
test_40 subtask_01_40.txt
test_41 subtask_01_41.txt
test_42 subtask_01_42.txt
test_43 subtask_01_43.txt
test_44 subtask_01_44.txt
test_45 subtask_01_45.txt
test_46 subtask_01_46.txt
test_47 subtask_01_47.txt
test_48 subtask_01_48.txt
test_49 subtask_01_49.txt
test_50 subtask_01_50.txt
Case Name Status Exec Time Memory
subtask_01_01.txt AC 429 ms 724 KB
subtask_01_02.txt AC 416 ms 720 KB
subtask_01_03.txt AC 460 ms 720 KB
subtask_01_04.txt AC 419 ms 720 KB
subtask_01_05.txt AC 370 ms 720 KB
subtask_01_06.txt AC 417 ms 692 KB
subtask_01_07.txt AC 406 ms 596 KB
subtask_01_08.txt AC 440 ms 724 KB
subtask_01_09.txt AC 401 ms 592 KB
subtask_01_10.txt AC 448 ms 720 KB
subtask_01_11.txt AC 406 ms 720 KB
subtask_01_12.txt AC 428 ms 720 KB
subtask_01_13.txt AC 417 ms 720 KB
subtask_01_14.txt AC 399 ms 720 KB
subtask_01_15.txt AC 414 ms 720 KB
subtask_01_16.txt AC 400 ms 724 KB
subtask_01_17.txt AC 455 ms 720 KB
subtask_01_18.txt AC 466 ms 720 KB
subtask_01_19.txt AC 389 ms 716 KB
subtask_01_20.txt AC 447 ms 596 KB
subtask_01_21.txt AC 430 ms 592 KB
subtask_01_22.txt AC 423 ms 724 KB
subtask_01_23.txt AC 417 ms 724 KB
subtask_01_24.txt AC 412 ms 720 KB
subtask_01_25.txt AC 413 ms 720 KB
subtask_01_26.txt AC 436 ms 716 KB
subtask_01_27.txt AC 422 ms 720 KB
subtask_01_28.txt AC 434 ms 720 KB
subtask_01_29.txt AC 446 ms 716 KB
subtask_01_30.txt AC 443 ms 724 KB
subtask_01_31.txt AC 437 ms 724 KB
subtask_01_32.txt AC 423 ms 720 KB
subtask_01_33.txt AC 444 ms 720 KB
subtask_01_34.txt AC 448 ms 716 KB
subtask_01_35.txt AC 457 ms 720 KB
subtask_01_36.txt AC 447 ms 720 KB
subtask_01_37.txt AC 433 ms 692 KB
subtask_01_38.txt AC 384 ms 716 KB
subtask_01_39.txt AC 375 ms 720 KB
subtask_01_40.txt AC 433 ms 716 KB
subtask_01_41.txt AC 452 ms 716 KB
subtask_01_42.txt AC 451 ms 720 KB
subtask_01_43.txt AC 408 ms 720 KB
subtask_01_44.txt AC 412 ms 688 KB
subtask_01_45.txt AC 412 ms 720 KB
subtask_01_46.txt AC 431 ms 712 KB
subtask_01_47.txt AC 409 ms 592 KB
subtask_01_48.txt AC 462 ms 720 KB
subtask_01_49.txt AC 425 ms 720 KB
subtask_01_50.txt AC 410 ms 720 KB