Submission #924839

#TimeUsernameProblemLanguageResultExecution timeMemory
924839ZygnoStove (JOI18_stove)C++17
0 / 100
0 ms348 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; }); for(int i = 0; i < k; i++) { 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[j].end = -1; break; } } } for(int i = n-1; i >= 0; i--) { if(guests[i].end == -1) { guests.erase(guests.begin() + i); } } int stove = 0; for(int i = 0; i < (int)guests.size(); 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...