Submission #93511

#TimeUsernameProblemLanguageResultExecution timeMemory
93511PancakeStove (JOI18_stove)C++14
100 / 100
36 ms6376 KiB
#pragma GCC optimize("Ofast") #pragma GCC target("sse,sse2,sse3,sse3,sse4,popcnt,abm,mmx") #include <bits/stdc++.h> #include <stdio.h> using namespace std; #define F first #define S second #define lb lower_bound #define ub upper_bound #define pb push_back #define pf push_front #define ppb pop_back #define mp make_pair #define bpp __builtin_popcount #define sqr(x) ((x) * (x)) #define al 0x3F3F3F3F #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define in insert #define ppf pop_front #define endl '\n' #define int long long typedef unsigned long long ull; typedef long long ll; typedef long double ld; typedef pair <int, int> pii; const int mod = (int)1e9 + 7; const int N = (int)2e5 + 123; const ll inf = (ll)3e18 + 1; const double pi = acos(-1.0); const double eps = 1e-7; const int dx[] = {0, 0, 1, 0, -1}; const int dy[] = {0, 1, 0, -1, 0}; int n, k, ans, a[N], res[N], p[N], sz[N], e; int get (int v) { if (v == p[v]) return v; return p[v] = get (p[v]); } inline void unite (int x, int y, int cost) { int u = get (x), v = get (y); if (u == v) return; if (sz[u] < sz[v]) swap (u, v); sz[u] += sz[v]; p[v] = u; e --; ans += cost; } inline void boost () { ios_base :: sync_with_stdio (NULL); cin.tie (NULL), cout.tie (NULL); } inline void Solve () { cin >> n >> k; e = n; for (int i = 1; i <= n; i ++) cin >> a[i]; vector < pair <int, pii> > v; for (int i = 1; i <= n; i ++) p[i] = i, sz[i] = 1; for (int i = 1; i < n; i ++) v.pb ({a[i + 1] - a[i], {i, i + 1} }); sort (all (v)); for (auto it : v) { if (e == k) break; int cost = it.F, x = it.S.F, y = it.S.S; unite (x, y, cost); } cout << ans + k; } main () { // freopen (".in", "r", stdin); // freopen (".out", "w", stdout); boost (); int tt = 1; // cin >> tt; while (tt --) { Solve (); } return 0; }

Compilation message (stderr)

stove.cpp:79:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main () {                                       
       ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...