Submission #1174078


Source Code Expand

#define _USE_MATH_DEFINES
#include <cstdio>
#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <complex>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <bitset>
#include <numeric>
#include <limits>
#include <climits>
#include <cfloat>
#include <functional>
#include <iterator>
using namespace std;

#ifdef _WIN32
#include <Windows.h>
#else
#include <sys/time.h>
#endif

class TicToc
{
private:
    double getCurrTime(){
    #ifdef _WIN32
        return GetTickCount() * 1e-3;
    #else
        struct timeval tv;
        gettimeofday(&tv, NULL);
        return tv.tv_sec + tv.tv_usec * 1e-6;
    #endif
    }
    double startTime;
public:
    void tic(){
        startTime = getCurrTime();
    }
    double toc(){
        return getCurrTime() - startTime;
    }
};

unsigned xor128(){
    static unsigned x=123456789,y=362436069,z=521288629,w=88675123;
    unsigned t;
    t=(x^(x<<11));x=y;y=z;z=w; return( w=(w^(w>>19))^(t^(t>>8)) );
}

bool getTankSet(int d, const vector<int>& amount, bitset<32>& ans)
{
    int n = amount.size();
    for(int i=0; i<(1<<n); ++i){
        bitset<32> bs(i);
        int sum = 0;
        for(int j=0; j<n; ++j){
            if(bs[j]){
                if(amount[j] == 0){
                    sum = 0;
                    break;
                }
                sum += amount[j];
            }
        }
        if(sum == d){
            ans = bs;
            return true;
        }
    }
    return false;
}

void solve(int d, int t, const vector<int>& capacity, const vector<int>& amount)
{
    int n = capacity.size();
    const int dMin = 30;
    const int capacityMin = 4;

    if(dMin <= d){
        bitset<32> bs;
        if(getTankSet(d, amount, bs)){
            cout << "sell " << bs.count();
            for(int i=0; i<n; ++i){
                if(bs[i])
                    cout << ' ' << (i + 1);
            }
            cout << endl;
            return;
        }

        if(t > 1){
            for(int i=0; i<n; ++i){
                vector<int> amount2 = amount;
                amount2[i] = capacity[i];
                bitset<32> bs;
                if(getTankSet(d, amount2, bs)){
                    cout << "fill " << (i + 1) << endl;
                    return;
                }
            }
            for(int i=0; i<n; ++i){
                for(int j=0; j<n; ++j){
                    if(i == j)
                        continue;
                    vector<int> amount2 = amount;
                    int move = min(amount2[i], capacity[j] - amount2[j]);
                    amount2[i] -= move;
                    amount2[j] += move;
                    bitset<32> bs;
                    if(getTankSet(d, amount2, bs)){
                        cout << "move " << (i + 1) << ' ' << (j + 1) << endl;
                        return;
                    }
                }
            }
        }
    }

    int index = -1;
    int maxIncrement = 0;
    for(int i=0; i<n; ++i){
        if(capacityMin <= capacity[i]){
            int increment = capacity[i] - amount[i];
            if(maxIncrement < increment){
                maxIncrement = increment;
                index = i;
            }
        }
    }
    if(index != -1){
        cout << "fill " << (index + 1) << endl;
        return;
    }

    index = min_element(capacity.begin(), capacity.end()) - capacity.begin();
    if(capacity[index] < capacityMin){
        cout << "change " << (index + 1) << endl;
        return;
    }

    cout << "pass" << endl;
}

int main()
{
    const int n = 8;
    const int maxTurn = 1000;

    for(int turn=0; turn<maxTurn; ++turn){
        int d, t;
        cin >> d >> t;
        vector<int> capacity(n), amount(n);
        for(int i=0; i<n; ++i)
            cin >> capacity[i];
        for(int i=0; i<n; ++i)
            cin >> amount[i];

        solve(d, t, capacity, amount);
    }
}

Submission Info

Submission Time
Task A - 石油王Xの憂鬱
User mamekin
Language C++14 (GCC 5.4.1)
Score 7290026
Code Size 4172 Byte
Status AC
Exec Time 81 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 138179 / 417500 147186 / 417500 157387 / 417500 147580 / 417500 151422 / 417500 154113 / 417500 159636 / 417500 145136 / 417500 146878 / 417500 155870 / 417500 156473 / 417500 134539 / 417500 154223 / 417500 142546 / 417500 144846 / 417500 136675 / 417500 140124 / 417500 146919 / 417500 131485 / 417500 151323 / 417500 146254 / 417500 148385 / 417500 147833 / 417500 140294 / 417500 147545 / 417500 148680 / 417500 137257 / 417500 151431 / 417500 151228 / 417500 148130 / 417500 151428 / 417500 134963 / 417500 143773 / 417500 145253 / 417500 144262 / 417500 145623 / 417500 143684 / 417500 150156 / 417500 131749 / 417500 137955 / 417500 147401 / 417500 143669 / 417500 142316 / 417500 147215 / 417500 141591 / 417500 157116 / 417500 142182 / 417500 138511 / 417500 140245 / 417500 151357 / 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 64 ms 720 KB
subtask_01_02.txt AC 79 ms 716 KB
subtask_01_03.txt AC 67 ms 716 KB
subtask_01_04.txt AC 81 ms 716 KB
subtask_01_05.txt AC 72 ms 720 KB
subtask_01_06.txt AC 66 ms 724 KB
subtask_01_07.txt AC 70 ms 720 KB
subtask_01_08.txt AC 72 ms 704 KB
subtask_01_09.txt AC 72 ms 720 KB
subtask_01_10.txt AC 71 ms 720 KB
subtask_01_11.txt AC 73 ms 720 KB
subtask_01_12.txt AC 72 ms 720 KB
subtask_01_13.txt AC 75 ms 720 KB
subtask_01_14.txt AC 73 ms 724 KB
subtask_01_15.txt AC 77 ms 716 KB
subtask_01_16.txt AC 64 ms 716 KB
subtask_01_17.txt AC 73 ms 720 KB
subtask_01_18.txt AC 66 ms 712 KB
subtask_01_19.txt AC 70 ms 716 KB
subtask_01_20.txt AC 67 ms 720 KB
subtask_01_21.txt AC 69 ms 724 KB
subtask_01_22.txt AC 68 ms 716 KB
subtask_01_23.txt AC 76 ms 724 KB
subtask_01_24.txt AC 69 ms 720 KB
subtask_01_25.txt AC 68 ms 660 KB
subtask_01_26.txt AC 72 ms 716 KB
subtask_01_27.txt AC 68 ms 724 KB
subtask_01_28.txt AC 74 ms 720 KB
subtask_01_29.txt AC 77 ms 716 KB
subtask_01_30.txt AC 74 ms 720 KB
subtask_01_31.txt AC 75 ms 724 KB
subtask_01_32.txt AC 69 ms 712 KB
subtask_01_33.txt AC 75 ms 720 KB
subtask_01_34.txt AC 66 ms 724 KB
subtask_01_35.txt AC 75 ms 720 KB
subtask_01_36.txt AC 70 ms 592 KB
subtask_01_37.txt AC 65 ms 720 KB
subtask_01_38.txt AC 74 ms 720 KB
subtask_01_39.txt AC 66 ms 720 KB
subtask_01_40.txt AC 76 ms 716 KB
subtask_01_41.txt AC 69 ms 720 KB
subtask_01_42.txt AC 70 ms 724 KB
subtask_01_43.txt AC 79 ms 720 KB
subtask_01_44.txt AC 76 ms 720 KB
subtask_01_45.txt AC 69 ms 724 KB
subtask_01_46.txt AC 71 ms 704 KB
subtask_01_47.txt AC 65 ms 720 KB
subtask_01_48.txt AC 70 ms 720 KB
subtask_01_49.txt AC 68 ms 596 KB
subtask_01_50.txt AC 71 ms 724 KB