# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
507136 | jamezzz | Comparing Plants (IOI20_plants) | C++17 | 29 ms | 13928 KiB |
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>
using namespace std;
#define pf printf
#define pb push_back
#define maxn 200005
int n;
inline int nx(int i){
return (i+1)%n;
}
inline int pv(int i){
return (i+n-1)%n;
}
int done[maxn],val[maxn],vis[maxn],num[maxn];
vector<int> AL[maxn],post;
void dfs(int u){
vis[u]=true;
for(int v:AL[u]){
if(!vis[v])dfs(v);
}
post.pb(u);
}
void dfs2(int u){
vis[u]=true;
for(int v:AL[u]){
if(!vis[v]){
num[v]=num[u];
dfs2(v);
}
}
}
void init(int k,vector<int> r){
n=(int)r.size();
queue<int> process;
for(int i=0;i<n;++i){
if(r[i]==0){
process.push(i);
}
}
while(!process.empty()){
int x=process.front();
process.pop();
int t=x;
for(int i=0;i<k-1;++i){
t=nx(t);
if(r[t]!=0)AL[t].pb(x);
}
t=x;
for(int i=0;i<k-1;++i){
t=pv(t);
if(r[t]!=0){
AL[t].pb(x);
--r[t];
if(r[t]==0)process.push(t);
}
else AL[x].pb(t);
}
}
/*
for(int i=0;i<n;++i){
pf("%d: ",i);
for(int j:AL[i])pf("%d ",j);
pf("\n");
}
*/
for(int i=0;i<n;++i){
if(vis[i]==0)dfs(i);
}
assert(post.size()==n);
for(int i=n-1;i>=0;--i){
val[post[i]]=n-i;
}
int cnt=0;
memset(vis,0,sizeof vis);
for(int i=n-1;i>=0;--i){
if(!vis[post[i]]){
num[post[i]]=cnt++;
dfs2(post[i]);
}
}
/*
for(int i=0;i<n;++i)pf("%d ",val[i]);
pf("\n");
*/
return;
}
int compare_plants(int x,int y){
if(num[x]!=num[y])return 0;
if(val[x]>val[y])return 1;
if(val[x]<val[y])return -1;
return 0;
}
Compilation message (stderr)
# | 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... |