Submission #613927

#TimeUsernameProblemLanguageResultExecution timeMemory
613927MounirComparing Plants (IOI20_plants)C++14
0 / 100
4054 ms212 KiB
#include "plants.h" #include <bits/stdc++.h> #define all(x) x.begin(), x.end() #define chmax(x, v) x = max(x, v) #define chmin(x, v) x = min(x, v) #define pb push_back #define pii pair<int, int> #define sz(x) (int)x.size() #define x first #define y second using namespace std; vector<int> num; void init(int k, vector<int> plusGros) { int nVals = sz(plusGros); vector<int> fait(nVals, 0); num.resize(nVals); vector<int> candidats; int tour = 0; while (tour < nVals){ if (candidats.empty()){ for (int i = 0; i < nVals; ++i){ if (!fait[i] && plusGros[i] == k - 1) candidats.pb(i); } int depart = 0; for (int i = 0; i < sz(candidats) - 1; ++i){ if (candidats[i] + k <= candidats[i + 1]) depart = i + 1; } vector<int> ordre; for (int delta = 0; delta < sz(candidats); ++delta) ordre.pb(candidats[(depart + delta)%sz(candidats)]); reverse(all(ordre)); candidats = ordre; } else { int iMax = candidats.back(); //cout << iMax << endl; candidats.pop_back(); fait[iMax] = true; num[iMax] = tour++; for (int delta = 1; delta < k; ++delta){ int i = iMax - delta; if (i < 0) i += nVals; plusGros[i]++; } } } } int compare_plants(int x, int y) { if (num[x] < num[y]) return -1; else return 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...