Submission #1173238


Source Code Expand

#include <numeric>
#include <map>
#include <algorithm>
#include <iostream>
#include <queue>
#define REP(i,n) for(int i=0; i<(int)(n); i++)

#include <cstdio>
inline int getInt(){ int s; scanf("%d", &s); return s; }

#include <set>

using namespace std;

void fill(int i){
  printf("fill %d\n", i + 1);
  fflush(stdout);
}

void change(int i){
  printf("change %d\n", i + 1);
  fflush(stdout);
}

void sell(int d, const vector<int> &a){
  const int n = a.size();
  vector<pair<int, int> > v(n);
  REP(i,n){
    v[i].first = a[i];
    v[i].second = i;
  }
  sort(v.rbegin(), v.rend());
  vector<int> res;
  int sum = 0;
  REP(i,n){
    if(v[i].first != 0 && sum + v[i].first <= d){
      sum += v[i].first;
      res.push_back(v[i].second);
    }
  }

  printf("sell %d", (int)res.size());
  REP(i,res.size()) printf(" %d", res[i] + 1);
  puts("");
  fflush(stdout);
}

void pass(){
  printf("pass\n");
  fflush(stdout);
}

int needT(vector<int> c, int d){
  const int n = c.size();
  sort(c.rbegin(), c.rend());
  int sum = 0;
  REP(i,n){
    if(sum + c[i] <= d){
      sum += c[i];
      if(sum == d) return i + 1;
    }
  }
  return -1;
}

int main(){
  const int n = 8;

  REP(i,1000){
    const int d = getInt();
    const int t = getInt();

    vector<int> c(n);
    vector<int> a(n);
    REP(i,n) c[i] = getInt();
    REP(i,n) a[i] = getInt();

    vector<int> need(n);
    map<int, int> cnt;

    REP(i,n){
      if(c[i] == 1 || c[i] == 2 || c[i] == 4 || c[i] == 8){
        if(cnt[c[i]] == 0)
          need[i] = 1;
        cnt[c[i]]++;
      }else if(c[i] == 10){
        if(cnt[c[i]] < 4)
          need[i] = 1;
        cnt[c[i]]++;
      }
    }

    if(accumulate(need.begin(), need.end(), 0) == n){
      const int sum = accumulate(a.begin(), a.end(), 0);

      if(sum == 0){
        const int tt = needT(c, d);
        if(tt + 1 > t){
          pass();
          goto end;
        }

        if(tt > 3 && d < 30){
          pass();
          goto end;
        }
        if(tt > 5 && d < 40){
          pass();
          goto end;
        }
      }

      if(d == sum){
        sell(d, a);
      }else{
        vector<pair<int, int> > v;
        REP(i,n) if(a[i] == 0)
          v.push_back(make_pair(c[i], i));
        sort(v.rbegin(), v.rend());
        REP(i,v.size()) if(sum + v[i].first <= d){
          fill(v[i].second);
          break;
        }
      }
    }else{
      REP(i,n) if(!need[i]){
        change(i);
        break;
      }
    }

  end:;
  }

  return 0;
}

Submission Info

Submission Time
Task A - 石油王Xの憂鬱
User yukim
Language C++14 (GCC 5.4.1)
Score 1609838
Code Size 2628 Byte
Status AC
Exec Time 48 ms
Memory 1232 KB

Compile Error

./Main.cpp: In function ‘int getInt()’:
./Main.cpp:9:44: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
 inline int getInt(){ int s; scanf("%d", &s); return s; }
                                            ^

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 33248 / 417500 32267 / 417500 27658 / 417500 33281 / 417500 32696 / 417500 30250 / 417500 27972 / 417500 36302 / 417500 35781 / 417500 38252 / 417500 29059 / 417500 31498 / 417500 36370 / 417500 37377 / 417500 30134 / 417500 31042 / 417500 34003 / 417500 28949 / 417500 32770 / 417500 30836 / 417500 38776 / 417500 25519 / 417500 29963 / 417500 27440 / 417500 37816 / 417500 34551 / 417500 28405 / 417500 34997 / 417500 30621 / 417500 25505 / 417500 33360 / 417500 33462 / 417500 25139 / 417500 36378 / 417500 33618 / 417500 32703 / 417500 36941 / 417500 35063 / 417500 27211 / 417500 31317 / 417500 30722 / 417500 36356 / 417500 29445 / 417500 30610 / 417500 33382 / 417500 32726 / 417500 31985 / 417500 33924 / 417500 33656 / 417500 28502 / 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 48 ms 1232 KB
subtask_01_02.txt AC 41 ms 720 KB
subtask_01_03.txt AC 43 ms 592 KB
subtask_01_04.txt AC 42 ms 720 KB
subtask_01_05.txt AC 39 ms 720 KB
subtask_01_06.txt AC 43 ms 720 KB
subtask_01_07.txt AC 43 ms 720 KB
subtask_01_08.txt AC 44 ms 724 KB
subtask_01_09.txt AC 40 ms 720 KB
subtask_01_10.txt AC 43 ms 720 KB
subtask_01_11.txt AC 40 ms 720 KB
subtask_01_12.txt AC 40 ms 716 KB
subtask_01_13.txt AC 41 ms 716 KB
subtask_01_14.txt AC 42 ms 592 KB
subtask_01_15.txt AC 42 ms 716 KB
subtask_01_16.txt AC 41 ms 720 KB
subtask_01_17.txt AC 42 ms 596 KB
subtask_01_18.txt AC 42 ms 716 KB
subtask_01_19.txt AC 42 ms 592 KB
subtask_01_20.txt AC 40 ms 716 KB
subtask_01_21.txt AC 40 ms 720 KB
subtask_01_22.txt AC 42 ms 660 KB
subtask_01_23.txt AC 42 ms 724 KB
subtask_01_24.txt AC 40 ms 720 KB
subtask_01_25.txt AC 41 ms 720 KB
subtask_01_26.txt AC 40 ms 720 KB
subtask_01_27.txt AC 41 ms 724 KB
subtask_01_28.txt AC 41 ms 716 KB
subtask_01_29.txt AC 42 ms 592 KB
subtask_01_30.txt AC 41 ms 720 KB
subtask_01_31.txt AC 43 ms 716 KB
subtask_01_32.txt AC 43 ms 720 KB
subtask_01_33.txt AC 42 ms 724 KB
subtask_01_34.txt AC 43 ms 720 KB
subtask_01_35.txt AC 41 ms 724 KB
subtask_01_36.txt AC 42 ms 720 KB
subtask_01_37.txt AC 42 ms 696 KB
subtask_01_38.txt AC 41 ms 720 KB
subtask_01_39.txt AC 42 ms 720 KB
subtask_01_40.txt AC 44 ms 720 KB
subtask_01_41.txt AC 43 ms 712 KB
subtask_01_42.txt AC 43 ms 716 KB
subtask_01_43.txt AC 39 ms 724 KB
subtask_01_44.txt AC 42 ms 720 KB
subtask_01_45.txt AC 43 ms 720 KB
subtask_01_46.txt AC 44 ms 720 KB
subtask_01_47.txt AC 42 ms 720 KB
subtask_01_48.txt AC 42 ms 724 KB
subtask_01_49.txt AC 44 ms 720 KB
subtask_01_50.txt AC 42 ms 724 KB