제출 #866804

#제출 시각아이디문제언어결과실행 시간메모리
866804Onur_Ilgaz곤돌라 (IOI14_gondola)C++17
25 / 100
30 ms5212 KiB
#include "gondola.h"
#include <bits/stdc++.h>
#define inf INT_MAX
using namespace std;

int valid(int n, int arr[])
{
  int ind = 0, mn = inf;
  set <int> st;
  for(int i = 0; i < n; i++) {
    if(arr[i] < mn) ind = i, mn = arr[i];
    if(st.count(arr[i])) return 0;
    st.insert(arr[i]);
  }
  int now = mn + 1;
  // cout<<ind<<" "<<now<<" ";
  for(int i = (ind + 1) % n; i % n != ind; i = (i + 1) % n, now++) {
    if(arr[i] <= n and arr[i] != now) {
        return 0;
    }
  }
  return 1;
}

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

int replacement(int n, int arr[], int ans[])
{
  map <int, int> mp;
  int mxi = 0, mx = 0;
  int shift = 0;
  for(int i = 0; i < n; i++) {
    mp[arr[i]] = i;
    if(arr[i] > mx) mxi = i, mx = arr[i];
    if(arr[i] <= n) {
      shift = (arr[i] - i - 1) % n;
    }
  }
  // cout<<"what"<<"\n";
  int l = mx;
  for(int i = n + 1; i <= l; i++) {
    int val;
    if(mp.count(i)) {
      val = mp[i];
    }
    else {
      val = mxi;
      mxi = i;
    }
    // cout<<val<<" "<<shift<<"\n";
    ans[i - (n + 1)] = (val + shift + n) % n + 1;
  }
  return l - 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...