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 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 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... |