제출 #834015

#제출 시각아이디문제언어결과실행 시간메모리
834015finn__식물 비교 (IOI20_plants)C++17
19 / 100
4090 ms5112 KiB
#include <bits/stdc++.h>

#include "plants.h"

using namespace std;

constexpr size_t N = 200000;

size_t n;
int subtask, s[N], h[N];

void init(int k, std::vector<int> r)
{
    n = r.size();
    if (k == 2)
        subtask = 1;
    else
        subtask = 2;

    if (subtask == 1)
    {
        partial_sum(r.begin(), r.end(), s);
    }
    else
    {
        for (size_t i = 0; i < n - 1; ++i)
        {
            int conseq_nonzero = 0, next_max = 0;
            for (size_t j = 0; j < 2 * n;)
            {
                while (j < 2 * n && !r[j % n])
                    ++j;
                size_t k = j;
                while (k < 2 * n && r[k % n])
                    ++k;
                if (k - j > conseq_nonzero)
                    conseq_nonzero = k - j, next_max = k % n;
                j = k;
            }

            h[next_max] = n - i;
            r[next_max] = -1;

            for (int j = next_max - k + 1; j < next_max; ++j)
                r[(j + (int)n) % n]--;
        }
    }
}

int compare_plants(int x, int y)
{
    if (subtask == 1)
    {
        int z = s[y - 1] - (x ? s[x - 1] : 0);
        return !z ? 1 : (z == y - x ? -1 : (!(s[n - 1] - z) ? -1 : ((s[n - 1] - z == n - (y - x) ? 1 : 0))));
    }
    else
    {
        return h[x] > h[y] ? 1 : -1;
    }
}

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

plants.cpp: In function 'void init(int, std::vector<int>)':
plants.cpp:36:27: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   36 |                 if (k - j > conseq_nonzero)
      |                     ~~~~~~^~~~~~~~~~~~~~~~
plants.cpp: In function 'int compare_plants(int, int)':
plants.cpp:55:83: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'long unsigned int'} [-Wsign-compare]
   55 |         return !z ? 1 : (z == y - x ? -1 : (!(s[n - 1] - z) ? -1 : ((s[n - 1] - z == n - (y - x) ? 1 : 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...