제출 #1346880

#제출 시각아이디문제언어결과실행 시간메모리
1346880hyyh곤돌라 (IOI14_gondola)C++20
55 / 100
17 ms4640 KiB
#include "gondola.h"
#include <set>
#include <iostream>
#include <vector>
#include <cstring>

using namespace std;

int valid(int n, int arr[])
{
  int should = -n-10;
  set<int> st;
  for(int i{};i < n;i++){
    should++;
    if(should == n+1) should = 1;
    //cout << should << endl;
    if(st.count(arr[i])) return 0;
    st.insert(arr[i]);
    if(arr[i] <= n){
      if(should <= 0) should = arr[i];
      else if(should != arr[i]) return 0;
    }
    else if(arr[i] <= 0) return 0;
    should = arr[i];
  }
  return 1;
}

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

int replacement(int n, int arr[], int finarr[])
{
  int start = -1;
  int n1 = 0;
  for(int i{};i < n;i++){
    n1 = max(n1,arr[i]-n);
    if(arr[i] <= n && start == -1){
      start = arr[i]-i;
      if(start < 1) start += n;
    }
  }
  if(start == -1) start = 1;
  //cout << n1 << endl;
  if(n1 == 0) return 0;
  int ans[n1];
  memset(ans,0,sizeof ans);
  for(int i{};i < n;i++){
    if(start == n+1) start = 1;
    if(arr[i] > n){
      ans[arr[i]-n-1] = start;
    }
    start++;
  }
  vector<int> leftover;
  for(int i{};i < n1;i++){
    //cout << ans[i] << " ";
    if(ans[i] == 0) leftover.emplace_back(i);
  }
  //cout << endl;
  if(!leftover.empty()){
    // for(auto k:leftover) cout << k << " ";
    // cout << endl;
    int si = leftover.size();
    ans[leftover[0]] = ans[n1-1];
    ans[n1-1] = leftover[si-1]+n+1;
    for(int i{1};i < si;i++){
      ans[leftover[i]] = leftover[i-1]+n+1;
    }
  }
  for(int i{};i < n1;i++){
    finarr[i] = ans[i];
  }
  return n1;
}

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

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