답안 #301013

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
301013 2020-09-17T15:52:04 Z luciocf 식물 비교 (IOI20_plants) C++14
0 / 100
84 ms 3452 KB
#include <bits/stdc++.h>
#include "plants.h"

using namespace std;

const int maxn = 2e5+10;

int n;
int head[maxn];

int r[maxn];

void init(int k, vector<int> a)
{
	n = a.size();
	for (int i = 0; i < n; i++)
		r[i] = a[i];

	head[0] = head[1] = 0;
	int at = r[0];

	for (int i = 1; i < n-1; i++)
	{
		if (r[i] == at) head[i+1] = head[i];
		else
		{
			head[i+1] = i;
			at = r[i];
		}
	}
}

int compare_plants(int x, int y)
{
	if (min(x, y) != 0 && max(x, y) != n-1)
	{
		if (x < y && head[y] > x) return 0;
		if (x > y && head[x] > y) return 0;

		if (x < y)
		{
			if (r[x] == 0) return 1;
			return -1;
		}
		else
		{
			if (r[y] == 0) return -1;
			return 1;
		}
	}
	
	if (x == 0)
	{
		if (head[n-1] <= y)
		{
			if (r[n-1] == 0 && r[y] == 0) return -1;
			if (r[n-1] == 1 && r[y] == 1) return 1;
			return 0;
		}
		else
		{
			if (head[y] > x) return 0;

			if (r[x] == 0) return 1;
			return -1;
		}
	}
	else if (y == 0)
	{
		if (head[n-1] <= x)
		{
			if (r[n-1] == 0 && r[x] == 0) return 1;
			if (r[n-1] == 1 && r[x] == 1) return -1;
			return 0;
		}
		else
		{
			if (head[x] > y) return 0;

			if (r[y] == 0) return -1;
			return 1;
		}
	}

	if (x == n-1)
	{
		if (head[y] <= 0)
		{
			if (r[n-1] == 0 && r[0] == 0) return 1;
			if (r[n-1] == 1 && r[0] == 1) return -1;
			return 0;
		}
		else
		{
			if (head[x] > y) return 0;

			if (r[y] == 0) return -1;
			return 1;
		}
	}
	else if (y == n-1)
	{
		if (head[x] <= 0)
		{
			if (r[n-1] == 0 && r[0] == 0) return -1;
			if (r[n-1] == 1 && r[0] == 1) return 1;
			return 0;
		}
		else
		{
			if (head[y] > x) return 0;

			if (r[x] == 0) return 1;
			return -1;
		}
	}
}

Compilation message

plants.cpp: In function 'int compare_plants(int, int)':
plants.cpp:117:1: warning: control reaches end of non-void function [-Wreturn-type]
  117 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 256 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 0 ms 256 KB Output is correct
4 Correct 1 ms 256 KB Output is correct
5 Correct 1 ms 256 KB Output is correct
6 Correct 61 ms 3192 KB Output is correct
7 Incorrect 84 ms 3452 KB Output isn't correct
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Incorrect 0 ms 256 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Incorrect 0 ms 256 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Output is correct
2 Incorrect 0 ms 256 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 256 KB Output is correct
2 Correct 1 ms 256 KB Output is correct
3 Correct 1 ms 256 KB Output is correct
4 Incorrect 0 ms 256 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 384 KB Output is correct
2 Correct 1 ms 256 KB Output is correct
3 Correct 0 ms 256 KB Output is correct
4 Incorrect 0 ms 256 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 256 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 0 ms 256 KB Output is correct
4 Correct 1 ms 256 KB Output is correct
5 Correct 1 ms 256 KB Output is correct
6 Correct 61 ms 3192 KB Output is correct
7 Incorrect 84 ms 3452 KB Output isn't correct
8 Halted 0 ms 0 KB -