제출 #628179

#제출 시각아이디문제언어결과실행 시간메모리
628179MilosMilutinovic식물 비교 (IOI20_plants)C++14
0 / 100
34 ms6992 KiB
#include "plants.h"
#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pair

using namespace std;
typedef long long LL;
typedef pair<int, int> PII;

int t[305];
bool rem[305], mark[305];
void init(int k, vector<int> r)
{
	int n = (int) r.size();
	int T = 0;
	rep(i, n) r[i] = k - 1 - r[i];
	while(1) {
		bool ok = false;
		rep(i, n) if(!rem[i]) ok = true;
		if(!ok) break;
		rep(i, n) mark[i] = false;
		rep(i, n) if(!rem[i]) {
			int cnt = 0;
			rep1(j, k - 1) if(!rem[(i + j) % n]) cnt ++;
			if(r[i] >= cnt) {
				rep1(j, k - 1) mark[(i + j) % n] = true;
			}
		}
		vector<int> vec;
		rep(i, n) if(!rem[i]) {
			int cnt = 0;
			rep1(j, k - 1) if(!rem[(i + j) % n]) cnt ++;
			if(r[i] >= cnt && !mark[i]) vec.push_back(i);
		}
		assert(!vec.empty());
		rep(id, vec.size()) {
			int i = vec[id];
			t[i] = T;
			rem[i] = true;
		}
		T ++;
	}
	return;
}

int compare_plants(int x, int y)
{
	return (t[x] == t[y] ? 0 : (t[x] < t[y] ? 1 : -1));
}

/*
4 3 2
0 1 1 2
0 2
1 2

4 2 2
0 1 0 1
0 3
1 3

*/
#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...