Submission #613944

#TimeUsernameProblemLanguageResultExecution timeMemory
613944Mounir식물 비교 (IOI20_plants)C++14
0 / 100
1 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);
 
//	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...