제출 #1304417

#제출 시각아이디문제언어결과실행 시간메모리
1304417thelegendary08식물 비교 (IOI20_plants)C++17
0 / 100
4085 ms7364 KiB
#include "plants.h"
#include<bits/stdc++.h>
#define int long long
#define pb push_back
#define mp make_pair
#define f0r(i,n) for(int i = 0; i<n; i++)
#define FOR(i, k, n) for(int i = k; i<n; i++)
#define vi vector<int>
#define vvi vector<vi>
#define pii pair<int,int>
#define vb vector<bool>
#define vout(v) for(auto u : v)cout<<u<<' '; cout<<endl;
#define dout(x) cout<<x<<' '<<#x<<'\n';
#define dout2(x,y) cout<<x<<' '<<#x<<' '<<y<<' '<<#y<<'\n';
using namespace std;
int n,k; vi r; vector<set<int>>adj; vector<vi>rch; vi ans;
void init(signed k, std::vector<signed> R) {
	n=R.size();::k=k; r.resize(n);f0r(i,n)r[i]=k-1-R[i]; 
	ans.resize(n); f0r(i,n)ans[i]=-1; int timer = 0; int cnt = 0; vb vis(n); 
	while(cnt < n){
		// vout(r);
		int prev = -1; f0r(j,2*n){
			int i = j % n;
			if(j>=n&&r[i]==0&&!vis[i]){
				int d = ((i-prev)%n+n)%n; if(d >= k||d==0){
					ans[i] = timer; int cur = i; cnt++; f0r(l,k-1){
						cur--; if(cur==-1)cur=n-1; 
						r[cur]--;
					}
				}
			}
			if(r[i]==0&&!vis[i])prev=i;
		}
		f0r(i,n)if(ans[i]==timer)vis[i]=1;
		timer++;
	}
	/* graph idea failed
	adj.resize(n); rch.resize(n); f0r(i,n)rch[i].resize(n);
	f0r(i, n){
		int p = i; int d = 0; f0r(j,k-1){
			p++; p%=n; d++; if(r[i]>=r[p]+d)adj[i].insert(p); if(r[p]>=r[i]+d)adj[p].insert(i);
			if(r[i]==0)adj[p].insert(i); if(r[i]==k-1)adj[i].insert(p);
		}
	}
	f0r(i,n){
		queue<int>q; vb vis(n); vis[i]=1,q.push(i); while(!q.empty()){
			int node = q.front(); q.pop(); for(auto u : adj[node])if(!vis[u]){
				vis[u]=1,q.push(u);
			}
		}
		f0r(j,n)rch[i][j]=vis[j];
	}
	*/
}

signed compare_plants(signed x, signed y) {
	/* graph 
	if(rch[x][y]==rch[y][x])return 0; 
	if(rch[x][y])return 1; 
	return -1;
	*/ 
	if(ans[x]==ans[y])return 0; 
	if(ans[x]<ans[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...