답안 #66421

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
66421 2018-08-10T13:35:52 Z Kubalionzzale 곤돌라 (IOI14_gondola) C++14
20 / 100
19 ms 1316 KB
#include "gondola.h"

#include <iostream>
#include <algorithm>

int valid(int n, int a[])
{
    bool visited[250010] = { 0 };
    int remember = -1;
    for (int i = 0; i < n; ++i)
    {
        --a[i];
        if (visited[a[i]])
            return 0;
        else
            visited[a[i]] = 1;

        if (a[i] < n)
        {
            if (remember == -1)
                remember = i;
            else
            {
                int val1 = a[remember];
                int val2 = a[i];

                if (val1 > val2)
                {
                    if (remember == (i + (val1 - val2)) % n)
                        continue;
                    else
                        return 0;
                }
                else
                {
                    if (i == (remember + (val2 - val1)) % n)
                        continue;
                    else
                        return 0;
                }
            }
        }
    }

    return 1;
}

//----------------------

int replacement(int n, int a[], int ans[])
{
    int model[100010] = { 0 };
    int diff = -1;
    bool visited[250010] = { 0 };
    int max = 0;
    for (int i = 0; i < n; ++i)
    {
        if (a[i] <= n)
        {
            --a[i];

            diff = (i - a[i] + n) % n;

            ++a[i];
        }

        visited[a[i]] = true;
        if (a[i] > max)
            max = a[i];
    }

    if (max == n)
        return 0;
    int cnt = max - n;
    int returning = cnt;
    --cnt;

    int lastunused = max - 1;
    while (visited[lastunused])
    {
        --lastunused;
    }

    for (int i = 0; i < n; ++i)
    {
        if (lastunused <= n)
        {
            a[i] = (i + diff) % n;
            ++a[i];
            ans[cnt] = a[i];
            --cnt;
            if (cnt == 0)
                return returning;
        }
        else
        {
            while (lastunused > n)
            {
                a[i] = lastunused;
                ans[cnt] = lastunused;
                --cnt;

                while (visited[lastunused])
                {
                    --lastunused;
                }
            }
        }
    }

    return returning;
}

//----------------------

int countReplacement(int n, int inputSeq[])
{
  return -3;
}

Compilation message

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:52:9: warning: unused variable 'model' [-Wunused-variable]
     int model[100010] = { 0 };
         ^~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 632 KB Output is correct
2 Correct 3 ms 744 KB Output is correct
3 Correct 3 ms 744 KB Output is correct
4 Correct 2 ms 744 KB Output is correct
5 Correct 2 ms 744 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 892 KB Output is correct
2 Correct 3 ms 892 KB Output is correct
3 Correct 3 ms 892 KB Output is correct
4 Correct 3 ms 892 KB Output is correct
5 Correct 2 ms 892 KB Output is correct
6 Correct 9 ms 1120 KB Output is correct
7 Correct 17 ms 1120 KB Output is correct
8 Correct 14 ms 1124 KB Output is correct
9 Correct 6 ms 1124 KB Output is correct
10 Correct 15 ms 1180 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1180 KB Output is correct
2 Correct 3 ms 1180 KB Output is correct
3 Correct 2 ms 1180 KB Output is correct
4 Correct 2 ms 1180 KB Output is correct
5 Correct 2 ms 1180 KB Output is correct
6 Correct 10 ms 1180 KB Output is correct
7 Correct 17 ms 1180 KB Output is correct
8 Correct 12 ms 1180 KB Output is correct
9 Correct 6 ms 1180 KB Output is correct
10 Correct 17 ms 1316 KB Output is correct
11 Correct 4 ms 1316 KB Output is correct
12 Correct 3 ms 1316 KB Output is correct
13 Correct 9 ms 1316 KB Output is correct
14 Correct 2 ms 1316 KB Output is correct
15 Correct 19 ms 1316 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 1316 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 1316 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 1316 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 1316 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 1316 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 1316 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 1316 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -