제출 #613943

#제출 시각아이디문제언어결과실행 시간메모리
613943Mounir식물 비교 (IOI20_plants)C++14
0 / 100
2 ms300 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); // cout << "ordre " << endl; int reste = nVals, prec = nVals + 1; for (int tour = 0; reste > 0; ){ if (reste == prec){ cout << "ounga"; return; } vector<int> candidats; for (int i = 0; i < nVals; ++i){ if (plusGros[i] == k - 1 && !fait[i]) candidats.pb(i); } prec = reste; reste -= sz(candidats); int depart = 0; for (int i = 0; i < sz(candidats) - 1; ++i){ if (candidats[i] + k <= candidats[i + 1]) depart = i + 1; } vector<int> file; for (int i = 0; i < min(sz(candidats), nVals); ++i) file.pb(candidats[(depart + i)%sz(candidats)]); // if (sz(candidats) > 1 && candidats[0] + k <= candidats[1]) // iMax = candidats[1]; for (int j = 0; j < sz(file); ++j){ int iMax = file[j]; fait[iMax] = true; num[iMax] = tour++; for (int delta = 1; delta < k; ++delta){ int i = iMax - delta; if (i < 0) i += nVals; plusGros[i]++; } } // cout << iMax << " "; } //cout << endl; } 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...