답안 #48670

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
48670 2018-05-17T19:15:59 Z doowey 곤돌라 (IOI14_gondola) C++14
20 / 100
16 ms 2172 KB
#include <bits/stdc++.h>
#include "gondola.h"

using namespace std;
typedef pair<int,int> pii;

#define fi first
#define se second
#define mp make_pair

const int N = (int)25e4 + 1293;

int valid(int n, int inputSeq[])
{
  int cnt[N];
  for(int j = 0;j < N;j ++ )
    cnt[j] = 0;
  int rest[n];
  int maz = (int)4e5 + 12345;
  for(int i = 0; i < n;i ++){
    cnt[inputSeq[i]]++;
    if(cnt[inputSeq[i]] >= 2)
      return 0;
    maz = min(maz, inputSeq[i]);
    rest[i] = inputSeq[i];
  }
  if(maz > n)
    return 1;
  int p,j;
  for(int i = 0;i < n;i ++ ){
    if(rest[i] <= n){
      p = rest[i]+1;
      j = i+1;
      j %= N;
      while(p <= n){
        rest[j] = p;
        p++;
        j++;
        j%=n;
      }
      p = 1;
      while(p < rest[i]){
        rest[j] = p;
        j++;
        j %= n;
        p++;
      }
      break;
    }
  }
  for(int i = 0; i < n;i ++){
    if(inputSeq[i] <= n){
      if(rest[i] != inputSeq[i])
        return 0;
    }
  }
  return 1;
}

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

int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
  vector<int>sq;
  int cnt[N];
  for(int i = 0;i < N;i ++)
    cnt[i] = 0;
  bool ok = false;
  for(int i = 0;i <n;i ++ ){
    if(gondolaSeq[i] > n)
      sq.push_back(gondolaSeq[i]);
    else{
      cnt[gondolaSeq[i]]++;
      ok = true;
    }
  }
  if(ok){
    int l = 0;
    replacementSeq[l] = 1;
    l++;
    int ii = n + 1;
    while(ii < sq[0]){
      replacementSeq[l] = ii;
      l++;
      ii++;
    }
    for(int j = 2;j <= n;j ++ ){
      replacementSeq[l] = j;
      l++;
    }
    return l;
  }
  sort(sq.begin(),sq.end());
  int p = 1;
  int l = 0;
  int ii;
  for(auto x : sq){
    while(cnt[p]!= 0)
      p++;
    if(l == 0){
      replacementSeq[l] = p;
      l++;
      ii = n + 1;
      while(ii < x){
        replacementSeq[l] = ii;
        l++;
        ii++;
      }
    }
    else{
      replacementSeq[l] = p; 
      l++;
    }
    p++;
  }
  return l;
}

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

int countReplacement(int n, int inputSeq[])
{
  return -3;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 1272 KB Output is correct
2 Correct 3 ms 1380 KB Output is correct
3 Correct 3 ms 1456 KB Output is correct
4 Correct 3 ms 1532 KB Output is correct
5 Correct 3 ms 1608 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1608 KB Output is correct
2 Correct 2 ms 1608 KB Output is correct
3 Correct 2 ms 1608 KB Output is correct
4 Correct 3 ms 1608 KB Output is correct
5 Correct 2 ms 1608 KB Output is correct
6 Correct 7 ms 1752 KB Output is correct
7 Correct 14 ms 1880 KB Output is correct
8 Correct 12 ms 2040 KB Output is correct
9 Correct 5 ms 2040 KB Output is correct
10 Correct 13 ms 2168 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 2168 KB Output is correct
2 Correct 2 ms 2168 KB Output is correct
3 Correct 2 ms 2168 KB Output is correct
4 Correct 2 ms 2168 KB Output is correct
5 Correct 2 ms 2168 KB Output is correct
6 Correct 7 ms 2168 KB Output is correct
7 Correct 16 ms 2168 KB Output is correct
8 Correct 13 ms 2168 KB Output is correct
9 Correct 6 ms 2168 KB Output is correct
10 Correct 14 ms 2168 KB Output is correct
11 Correct 3 ms 2168 KB Output is correct
12 Correct 3 ms 2168 KB Output is correct
13 Correct 9 ms 2168 KB Output is correct
14 Correct 3 ms 2168 KB Output is correct
15 Correct 16 ms 2172 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 2172 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2172 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2172 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2172 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2172 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2172 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2172 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -