제출 #775152

#제출 시각아이디문제언어결과실행 시간메모리
775152danikoynov곤돌라 (IOI14_gondola)C++14
25 / 100
8 ms640 KiB
#include "gondola.h"
#include<bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 10;

int cnt[maxn];
int valid(int n, int inputSeq[])
{
    for (int i = 0; i < n; i ++)
    {
        int val = inputSeq[(i + 1) % n];

        if (inputSeq[i] == n && val == 1)
            continue;
        if (val != inputSeq[i] + 1)
        {
            ///cout << i << endl;
            ///cout << inputSeq[i] << " " << val << endl;
            return 0;
        }

    }
    return 1;
}

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

int order[maxn], to_go[maxn];
int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
    int pivot = 0;
    while(pivot < n && gondolaSeq[pivot] > n)
        pivot ++;

    if (pivot == n)
        pivot = 0;

    order[gondolaSeq[pivot] - 1] = gondolaSeq[pivot];
    for (int i = pivot + 1; i < n + pivot; i ++)
    {
        order[(gondolaSeq[pivot] - 1 + (i - pivot)) % n] = gondolaSeq[i % n];
    }
    ///for (int i = 0; i < n; i ++)
    /// cout << order[i] << " ";
    ///cout << endl;
    int mx = 0, pt = 0;

    for (int i = 0; i < n; i ++)
    {
        if (order[i] > n)
        {
            if (order[i] > mx)
            {
                mx = order[i];
                pt = i + 1;
            }
            to_go[order[i]] = i + 1;
        }
    }
        ///cout << mx << " " << pt << endl;

    int idx = 0, last_free = pt;
    for (int i = n + 1; i <= mx; i ++)
    {
        if (to_go[i] != 0)
        {
            if (to_go[i] == pt)
                replacementSeq[idx ++] = last_free;
            else
            replacementSeq[idx ++] = to_go[i];
        }
        else
        {
            replacementSeq[idx ++] = last_free;
            last_free = i;
        }
    }
    return max(0, mx - n);
}

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

int countReplacement(int n, int inputSeq[])
{
    return -3;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...