Submission #925076

#TimeUsernameProblemLanguageResultExecution timeMemory
925076ZygnoStove (JOI18_stove)C++17
50 / 100
1052 ms1884 KiB
#include <bits/stdc++.h> using namespace std; typedef long long int ll; struct guest { int start; int end; }; struct breakLength { int start; int length; }; int main() { int n; // Number of guests int k; // Number of matches cin >> n >> k; vector<guest> guests(n); vector<breakLength> breaks(n-1); for (int i = 0; i < n; i++) { int temp = 0; cin >> temp; guests[i].start = temp; guests[i].end = temp+1; if (i > 0) { breaks[i-1].start = guests[i].start; breaks[i-1].length = guests[i].start - guests[i-1].end; //Length of break between guests } } //Combine guests until there are k guests //Order breaks by length sort(breaks.begin(), breaks.end(), [](breakLength a, breakLength b) { return a.length < b.length; }); int i = 0; while(n - i > k) { for(int j = 0; j < n; j++) { if(breaks[i].start == guests[j].start) { int x = 1; while(guests[j-x].end == -1) { x++; } guests[j-x].end = guests[j].end; guests.erase(guests.begin() + j); break; } } i++; } int stove = 0; n = guests.size(); for(int i = 0; i < n; i++) { stove += guests[i].end - guests[i].start; } cout << stove << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...