Submission #661143

# Submission time Handle Problem Language Result Execution time Memory
661143 2022-11-24T16:34:22 Z evenvalue Packing Biscuits (IOI20_biscuits) C++17
12 / 100
1 ms 596 KB
#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;

template<typename T>
using min_heap = priority_queue<T, vector<T>, greater<T>>;
template<typename T>
using max_heap = priority_queue<T, vector<T>, less<T>>;

using int64 = long long;
using ld = long double;

constexpr int kInf = 1e9 + 10;
constexpr int64 kInf64 = 1e15 + 10;
constexpr int kMod = 1e9 + 7;
constexpr int kBits = 60;

int64 calc(const vector<int64> &biscuits) {
  int64 ans = 1;
  for (int i = 0; i < biscuits.size(); i++) {
    ans += (1LL << i) * biscuits[i];
  }
  return ans;
}

int64 count_tastiness(int64 x, vector<int64> biscuits) {
  biscuits.push_back(0);

  assert(x == 1);

  vector<vector<int64>> segments = {{}};

  for (int64 i = 0, carry = 0; i < biscuits.size(); i++) {
    biscuits[i] += carry;
    carry = (biscuits[i] - 1) / 2;
    if (biscuits[i] == 0) {
      segments.emplace_back();
    } else {
      segments.back().push_back(biscuits[i] - carry * 2);
    }
    if (i == biscuits.size() - 1 and carry) biscuits.push_back(0);
  }

  int64 ans = 1;
  for (const auto &segment : segments) {
    ans *= calc(segment);
  }

  return ans;
}

Compilation message

biscuits.cpp: In function 'int64 calc(const std::vector<long long int>&)':
biscuits.cpp:20:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |   for (int i = 0; i < biscuits.size(); i++) {
      |                   ~~^~~~~~~~~~~~~~~~~
biscuits.cpp: In function 'int64 count_tastiness(int64, std::vector<long long int>)':
biscuits.cpp:33:34: warning: comparison of integer expressions of different signedness: 'int64' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |   for (int64 i = 0, carry = 0; i < biscuits.size(); i++) {
      |                                ~~^~~~~~~~~~~~~~~~~
biscuits.cpp:41:11: warning: comparison of integer expressions of different signedness: 'int64' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |     if (i == biscuits.size() - 1 and carry) biscuits.push_back(0);
      |         ~~^~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Runtime error 1 ms 424 KB Execution killed with signal 6
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 296 KB Output is correct
2 Correct 0 ms 304 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 0 ms 308 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 468 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 596 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Runtime error 1 ms 424 KB Execution killed with signal 6
3 Halted 0 ms 0 KB -