제출 #507114

#제출 시각아이디문제언어결과실행 시간메모리
507114jamezzzComparing Plants (IOI20_plants)C++17
0 / 100
74 ms13188 KiB
#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 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");
	}
	*/
	
	int cnt=0;
	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;
	}
	
	/*
	for(int i=0;i<n;++i)pf("%d ",val[i]);
	pf("\n");
	*/
	return;
}

int compare_plants(int x,int y){
	if(val[x]>val[y])return 1;
	if(val[x]<val[y])return -1;
	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from plants.cpp:2:
plants.cpp: In function 'void init(int, std::vector<int>)':
plants.cpp:73:20: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   73 |  assert(post.size()==n);
      |         ~~~~~~~~~~~^~~
plants.cpp:68:6: warning: unused variable 'cnt' [-Wunused-variable]
   68 |  int cnt=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...