답안 #818175

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
818175 2023-08-10T03:14:29 Z andecaandeci 곤돌라 (IOI14_gondola) C++17
55 / 100
15 ms 2292 KB
#include <bits/stdc++.h>
#include "gondola.h"
using namespace std;

bool vis[250005];

int valid(int n, int inputSeq[])
{
  bool drop = 0;
  int cur = -1;
  for (int i = 0; i < n; i++) {
    if (cur != -1) cur = (cur%n)+1;
    if (vis[inputSeq[i]]) return 0;
    vis[inputSeq[i]] = 1;
    if (inputSeq[i] > n) continue;
    // if (last > inputSeq[i] and drop) return 0;
    // if (last > inputSeq[i]) drop = 1;
    // last = inputSeq[i];
    // cout << cur << endl;
    if (cur == -1) cur = inputSeq[i];
    else if (cur != inputSeq[i]) return 0;
  }
  return 1;
}

//----------------------
vector<pair<int, int>> dif;

int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
  // int mx = 0;
  // for (int i = 0; i < n; i++) {
  //   mx = max(mx, gondolaSeq[i]);
  //   vis[gondolaSeq[i]] = 1;
  // }

  // int counter = 0;
  // for (int i = 1; i <= mx; i++) {
  //   if (vis[i]) continue;
  //   replacementSeq[counter] = i;
  //   counter++;
  // }
  // mx -= n;
  // return mx;

  int landasan = -1;
  int idx_landasan = -1;
  for (int i = 0; i < n; i++) {
    if (gondolaSeq[i] <= n) {
      landasan = gondolaSeq[i];
      idx_landasan = i;
      break;
    }
  }

  if (landasan == -1 and idx_landasan == -1) {
    landasan = 1;
    idx_landasan = 0;
  }

  // cout << "landasan : " << idx_landasan << " " << landasan << endl;
  int curi, curdasar = landasan-1;
  for (int i = idx_landasan; i < n+idx_landasan; i++) {
    curi = (i%n);
    curdasar = (curdasar%n)+1;
    if (gondolaSeq[curi] <= n) continue;
    dif.push_back({gondolaSeq[curi], curdasar});
    // cout << curi << " " << curdasar << " " << endl;
  }
  sort(dif.begin(), dif.end());
  // cout << "------" << endl;

  // for (auto i: dif) {
  //   cout << i.first << " " << i.second << endl;
  // }

  int cur = n+1, idx = 0, counter = 0;
  for (int i = 0; i < dif.size(); i++) {
    while (dif[i].second != dif[i].first) {
      replacementSeq[idx] = dif[i].second;
      dif[i].second = cur;
      cur++;
      idx++;
      counter++;
      // cout << dif[i].first << " " << dif[i].second << endl;
    }
  }
  for (auto i: dif) {
    while (i.second != i.first) {
      replacementSeq[idx] = i.second;
      i.second = cur;
      cur++;
      idx++;
      counter++;
    }
  }
  // cout << endl;
  return counter;
}

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

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

Compilation message

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:9:8: warning: unused variable 'drop' [-Wunused-variable]
    9 |   bool drop = 0;
      |        ^~~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:78:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   78 |   for (int i = 0; i < dif.size(); i++) {
      |                   ~~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 3 ms 468 KB Output is correct
7 Correct 6 ms 572 KB Output is correct
8 Correct 5 ms 596 KB Output is correct
9 Correct 2 ms 340 KB Output is correct
10 Correct 6 ms 596 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 3 ms 468 KB Output is correct
7 Correct 6 ms 596 KB Output is correct
8 Correct 7 ms 532 KB Output is correct
9 Correct 2 ms 340 KB Output is correct
10 Correct 8 ms 596 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 3 ms 468 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 6 ms 540 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 6 ms 596 KB Output is correct
12 Correct 7 ms 596 KB Output is correct
13 Correct 10 ms 1460 KB Output is correct
14 Correct 7 ms 596 KB Output is correct
15 Correct 15 ms 2292 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -