Submission #66575

#TimeUsernameProblemLanguageResultExecution timeMemory
66575aquablitz11Gondola (IOI14_gondola)C++14
55 / 100
75 ms4988 KiB
#include <bits/stdc++.h>
#include "gondola.h"
using namespace std;

int valid(int n, int A[])
{
    set<int> seen;
    int six = -1;
    for (int i = 0; i < n; ++i) {
        if (seen.count(A[i])) return 0;
        seen.insert(A[i]);
        if (A[i] <= n) six = (i-(A[i]-1)+n)%n;
    }
    if (six == -1) return 1;
    for (int i = 0; i < n; ++i) {
        int j = (six+i)%n;
        if (A[j] <= n && A[j] != i+1)
            return false;
    }

    return 1;
}

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

int replacement(int n, int A[], int ret[])
{
    int six = 0, mx = 0;
    for (int i = 0; i < n; ++i) {
        if (A[i] <= n) six = (i-(A[i]-1)+n)%n;
        mx = max(mx, A[i]);
    }
    map<int, int> num;
    for (int i = 0; i < n; ++i) {
        int j = (six+i)%n;
        if (A[j] > n)
            num[A[j]] = i+1;
    }
    int cnt = 0, v = n;
    for (auto p : num) {
        int x = p.second, y = p.first;
        while (x < y) {
            ret[cnt++] = x;
            x = ++v;
        }
    }

    return cnt;
}

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

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...