This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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)%nVals <= 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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |