Submission #419198

#TimeUsernameProblemLanguageResultExecution timeMemory
419198qwerasdfzxclComparing Plants (IOI20_plants)C++14
14 / 100
4054 ms3196 KiB
#include "plants.h"
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
int n, a[200200];

void init(int k, vector<int> r) {
    n = r.size();
    set<int> st;
	for (int i=n;i;i--){
        int cnt = 0;
        for (int j=1;j<=k-1;j++) if (a[j]) cnt++;
        for (int j=0;j<n;j++){
            if (!a[j] && cnt==r[j]) st.insert(j);
            if (a[(j+1)%n]) cnt--;
            if (a[(j+k)%n]) cnt++;
        }
        if (st.size()==1){
            a[*(st.begin())] = i;
            st.erase(st.begin());
            continue;
        }
        assert(!st.empty());
        auto iter = st.begin();
        int prv = *iter;
        iter++;
        bool flag = 0;
        for(;iter!=st.end();iter++){
            if ((*iter)-prv>=k){
                flag = 1;
                a[*iter] = i;
                st.erase(iter);
                break;
            }
        }
        if (!flag){
            a[*(st.begin())] = i;
            st.erase(st.begin());
        }
	}
}

int compare_plants(int x, int y) {
    if (a[x]>a[y]) return 1;
    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...