제출 #1145493

#제출 시각아이디문제언어결과실행 시간메모리
1145493x93bd0곤돌라 (IOI14_gondola)C++20
45 / 100
11 ms2376 KiB
#include "gondola.h"
#include <algorithm>
#include <stdio.h>

int valid(int n, int inputSeq[])
{
  int x;
  for (x = 0; x < n; x++) {
    if (inputSeq[x] <= n)
      break;
  }

  if (x == n) return 1;
  for (int i = 0; i < n; i++) {
    int idx = i < inputSeq[x] ? (x + n - (inputSeq[x] - (i + 1))) : x + ((i + 1) - inputSeq[x]);
    int v = inputSeq[idx % n];
    if (v > n || v == (i + 1)) continue;
    return 0;
  }

  return 1;
}

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

int replacement(int n, int gs[], int rs[])
{
  int x = 0;
  for (; x < n; x++) {
    if (gs[x] <= n)
      break;
  }

  if (x == n) {
    std::pair<int, int> d[n];
    for (int x = 0; x < n; x++)
      d[x].first = gs[x], d[x].second = x;
    std::sort(d, d + n);

    int l = 0, m = n + 1;
    for (uint x = 0; x < n; x++) {
      rs[l++] = d[x].second + 1;
      m++;

      while ((m - 1) != d[x].first)
        rs[l++] = (m++) - 1;
    }

    return l;
  }

  int a[n];
  x = (x + (n - gs[x] + 1)) % n;
  for (uint i = 0; i < n; i++)
    a[i] = gs[(x + i) % n];

  std::pair<uint, uint> d[n];
  for (uint x = 0; x < n; x++)
    d[x].first = a[x], d[x].second = x;
  std::sort(d, d + n);

  uint l = 0, v = n + 1;
  for (uint x = 0; x < n; x++) {
    if (d[x].first <= n) continue;
    rs[l++] = d[x].second + 1;
    v++;

    while ((v - 1) != d[x].first)
      rs[l++] = (v++) - 1;
  }

  return l;
}

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

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