Submission #1174365


Source Code Expand

#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
  srand((unsigned)time(NULL));
  
  int D, T, C[8], A[8];
 
  for(int Z = 0; Z < 1000; Z++) {
    cin >> D >> T;
    for(int i = 0; i < 8; i++) cin >> C[i];
    for(int i = 0; i < 8; i++) cin >> A[i];
 
    vector< pair< int, int > > vs;
    vector< pair< int, int > > create;
    
    for(int i = 0; i < (1 << 8); i++) {
      int sum = 0, sum2 = 0;

      
      for(int j = 0; j < 8; j++) {
        if((i >> j) & 1) {
          sum2 += C[j];
        }
      }
      
      create.emplace_back(sum2, i);

      bool flag = false;
      for(int j = 0; j < 8; j++) {
        if((i >> j) & 1) {
          if(A[j] == 0) flag = true;
          sum += A[j];
        }
      }
      if(!flag && sum == D) vs.emplace_back(__builtin_popcount(i), i);
    }
    
    if(vs.empty()) {
      sort(begin(create), end(create)); 
      auto get = lower_bound(begin(create), end(create), make_pair(D, -1));
      if(get == end(create) || get->first != D) {

        bool flag = false;
        if(T > 60) {
          vector< int > qs(11, 0);
          int mosted = 0;
          for(int i = 0; i < 8; i++) qs[C[i]]++;

          vector< int > ssss;
          for(int i = 0; i < 8; i++) {
            if(qs[C[i]]>1) ssss.push_back(i);
          }

          if(!ssss.empty())  {
            cout << "change " << ssss[rand() % ssss.size()] + 1 << endl;
            flag = true;
        
          }
        } else {
          for(int i = 0; i < 8; i++) {
            if(A[i] == 0) {
              cout << "fill " << i + 1 << endl;
              flag = true;
              break;
            }
          }
        }

        if(!flag) cout << "pass" << endl;
        continue;
      }
 
      int needSmallest = 114514;
      int qs = 0;
      while(get != end(create) && get->first == D) {
        int proc = 0;
        for(int i = 0; i < 8; i++) {
          if(((get->second) >> i) & 1 && A[i] != C[i]) {
            ++proc;
          }
        }
        if(needSmallest > proc) {
          needSmallest = proc;
          qs = get->second;
        }
        ++get;
      }
 
      for(int i = 0; i < 8; i++) {
        if((qs >> i) & 1 && A[i] != C[i]) {
          cout << "fill " << i + 1 << endl;
          break;
        }
      }
    } else {
      auto p = *max_element(begin(vs), end(vs));
      cout << "sell ";
      vector< int > st;
      for(int i = 0; i < 8; i++) {
        if(A[i] == 0) continue;
        if((p.second >> i) & 1) st.push_back(i + 1);
      }
      cout << st.size();
      for(int v : st) cout << " " << v;
      cout << endl;
    }
  }
}

Submission Info

Submission Time
Task B - 日本橋大渋滞
User ei13333
Language C++14 (GCC 5.4.1)
Score 3331
Code Size 2723 Byte
Status AC
Exec Time 22 ms
Memory 256 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
Score / Max Score 114 / 50000 111 / 50000 114 / 50000 116 / 50000 120 / 50000 112 / 50000 112 / 50000 116 / 50000 105 / 50000 109 / 50000 117 / 50000 109 / 50000 109 / 50000 111 / 50000 107 / 50000 115 / 50000 109 / 50000 110 / 50000 111 / 50000 110 / 50000 115 / 50000 110 / 50000 110 / 50000 108 / 50000 106 / 50000 110 / 50000 111 / 50000 104 / 50000 110 / 50000 110 / 50000
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
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
Case Name Status Exec Time Memory
subtask_01_01.txt AC 14 ms 256 KB
subtask_01_02.txt AC 14 ms 256 KB
subtask_01_03.txt AC 22 ms 256 KB
subtask_01_04.txt AC 21 ms 256 KB
subtask_01_05.txt AC 14 ms 256 KB
subtask_01_06.txt AC 14 ms 256 KB
subtask_01_07.txt AC 22 ms 256 KB
subtask_01_08.txt AC 21 ms 256 KB
subtask_01_09.txt AC 21 ms 256 KB
subtask_01_10.txt AC 14 ms 256 KB
subtask_01_11.txt AC 21 ms 256 KB
subtask_01_12.txt AC 22 ms 256 KB
subtask_01_13.txt AC 21 ms 256 KB
subtask_01_14.txt AC 14 ms 256 KB
subtask_01_15.txt AC 21 ms 256 KB
subtask_01_16.txt AC 22 ms 256 KB
subtask_01_17.txt AC 14 ms 256 KB
subtask_01_18.txt AC 14 ms 256 KB
subtask_01_19.txt AC 14 ms 256 KB
subtask_01_20.txt AC 21 ms 256 KB
subtask_01_21.txt AC 21 ms 256 KB
subtask_01_22.txt AC 14 ms 256 KB
subtask_01_23.txt AC 14 ms 256 KB
subtask_01_24.txt AC 13 ms 256 KB
subtask_01_25.txt AC 14 ms 256 KB
subtask_01_26.txt AC 13 ms 256 KB
subtask_01_27.txt AC 14 ms 256 KB
subtask_01_28.txt AC 22 ms 256 KB
subtask_01_29.txt AC 14 ms 256 KB
subtask_01_30.txt AC 21 ms 256 KB