제출 #303345

#제출 시각아이디문제언어결과실행 시간메모리
303345Utaha식물 비교 (IOI20_plants)C++14
14 / 100
4065 ms5240 KiB
#include "plants.h"
#include<bits/stdc++.h>
using namespace std;
const int maxn = 200005;
#define REP(i,n) for(int i=0;i<(n);i++)
#define eb emplace_back
#define pb push_back
#define SZ(a) ((int)a.size())
#define ALL(a) a.begin(),a.end()
int n,k;

bool vis[maxn];

int a[maxn];

void init(int _k, std::vector<int> r) {
	n = r.size();
	k = _k;
	assert(k*2>n);
	int pt = 0;
	int cnt = 0;
	while(cnt<n){
		vector<int> idx;
		REP(j,n) if(!vis[j]){
			if(r[j]==0) idx.pb(j);
		}
		// for(int i:idx){
			// cout<<i<<' ';
		// }
		// cout<<endl;

		idx.pb(idx[0]+n);
		REP(i,SZ(idx)-1){
			if(idx[i+1]-idx[i]>=k){
				int t = idx[i+1]%n;
				vis[t] = 1;
				cnt++;
				a[t] = pt;
				REP(j,k-1){
					int pre = (t-j-1+n)%n;
					if(!vis[pre]) r[pre]--;
				}
			}
		}
		pt--;
		// for(int i:idx) cout<<i<<' ';
		// cout<<'\n';
		
	}
	// REP(i,n) cout<<a[i]<<" \n"[i==n-1];
	return;
}


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