Submission #1258688

#TimeUsernameProblemLanguageResultExecution timeMemory
1258688maestro194Stove (JOI18_stove)C++20
100 / 100
12 ms1992 KiB
/*
  Author: CNH_Tourist
  Status: Not submitted
*/

#include <bits/stdc++.h>
#pragma GCC optimization ("O3, unroll-loops")
using namespace std;

#define filename "test"
#define endl '\n'
#define X first
#define Y second
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define pii pair<int,int>
#define pll pair<ll,ll>
#define ll long long
#define ull unsigned long long
#define all(x) (x).begin(),(x).end()
#define BIT(x, i) (((x) >> (i)) & 1)
#define CBIT __builtin_popcount
#define gcd __gcd

void FileInOut()
{
  ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);

  ifstream *fi = new ifstream (filename".inp");
  ofstream *fo = new ofstream (filename".out");
  if(*fi)
  {
    cin.rdbuf( fi->rdbuf() );
    cout.rdbuf( fo->rdbuf() );
  }
}
// unusual mod : 1000003999
// atan2(y, x): tinh goc tao boi oX va diem co toa do (x, y)

const int N = 100005;

int n, k;
int a[N];
vector<pii> v;

void Solve()
{
  cin >> n >> k;
	for(int i = 1; i <= n; i ++)
    cin >> a[i];
  for(int i = 1; i <= n; i ++) {
    int fi = a[i];
    int se = a[i] + 1;
    if (i > 1 && a[i - 1] + 1 == a[i]) {
      fi = v[v.size() - 1].X;
      v.pop_back();
    }
    v.pb({fi, se});
  }

  // for(pii x : v) {
  //   cout << x.X << " " << x.Y << endl;
  // }

  for(int i = 0; i < v.size() - 1; i ++)
    a[i] = v[i + 1].X - v[i].Y;
  sort(a, a + v.size() - 1);
  long long ans = n;
  for(int i = 0; i < min((int)v.size() - k, (int)v.size() - 1); i ++) {
    ans += a[i];
  }
  cout << ans;
  
}

int32_t main()
{
  using namespace std::chrono;
  auto start = high_resolution_clock::now(); 
  FileInOut(); 
  
  int test = 1;
  // cin >> test;
  while(test--)
    Solve();

  auto stop = high_resolution_clock::now();
  auto duration = duration_cast<microseconds>(stop - start);
  double t = duration.count() * 1.0 / 1000000;
  // cout << endl << "Runtime: " << t << endl;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...