# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
226506 | 2020-04-24T02:32:42 Z | Toirov_Sadi | Stove (JOI18_stove) | C++17 | 4 ms | 256 KB |
#include<iostream> #include<set> #include<vector> #include<algorithm> using namespace std; const long long N = 1e5 + 7; const long long inf = 1e9 + 7; const long long mod = 1e9 + 7; int n; int k; int a[N]; set<pair<int, int>> s; vector<pair<int, pair<int, int>>> b; int main() { scanf("%d %d", &n, &k); for(int i = 1; i <= n; i ++){ scanf("%d ", a + i); s.insert({i, i}); } if(n == 1){ printf("1\n"); return 0; } for(int i = 2; i <= n; i ++){ b.push_back({a[i] - a[i - 1] + 1, {i - 1, i}}); } sort(b.rbegin(), b.rend()); while(s.size() > k && !b.empty()){ auto y = s.lower_bound({b.back().second.second, b.back().second.second}); b.erase(b.begin()); auto x = y; x --; if(x == s.end() || y == s.end()){ continue; } s.erase(x); s.erase(y); s.insert({x->first, y->second}); } long long res = 0; for(auto x: s){ res += (a[x.second] - a[x.first] + 1); } printf("%I64d", res); }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 4 ms | 256 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 4 ms | 256 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 4 ms | 256 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |