Submission #770489

#TimeUsernameProblemLanguageResultExecution timeMemory
770489sadsaStove (JOI18_stove)C++17
100 / 100
45 ms4204 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using vi = vector<int>; using ii = tuple<int, int>; using vii = vector<ii>; template <typename T> istream &operator>>(istream &in, vector<T> &vec) { for (auto &x : vec) in >> x; return in; } template <typename... Ts> istream &operator>>(istream &in, tuple<Ts...> &tuple) { apply([&in](auto&... args) { ((in >> args), ...); }, tuple); return in; } template <typename... Ts> auto IN() { tuple<Ts...> result; apply([](auto&... args) { ((cin >> args), ...); }, result); return result; } template <typename T> void OUT(T&& arg) { cout << arg << '\n'; } template <typename T, typename... Ts> void OUT(T&& x, Ts&&... y) { cout << x << ' '; OUT(y...); } int main() { auto [n, k] = IN<int, int>(); vi T(n); cin >> T; vii groups{{T[0], T[0]+1}}; vii gaps; for (int i = 1; i < T.size(); ++i) { int Ti = T[i]; auto &[f, t] = groups.back(); if (t == Ti) ++t; else { gaps.emplace_back(t, Ti); groups.emplace_back(Ti, Ti+1); } } int ans = n; k -= groups.size(); // sort gaps by length stable_sort(gaps.begin(), gaps.end(), [] (auto a, auto b) { return get<1>(a) - get<0>(a) < get<1>(b) - get<0>(b); }); int i = 0; for (; k < 0; ++k) { int gap_size = get<1>(gaps[i]) - get<0>(gaps[i]); ans += gap_size; ++i; } OUT(ans); return 0; }

Compilation message (stderr)

stove.cpp: In function 'int main()':
stove.cpp:52:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |     for (int i = 1; i < T.size(); ++i) {
      |                     ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...