Submission #1166680

#TimeUsernameProblemLanguageResultExecution timeMemory
1166680HappyCapybaraGondola (IOI14_gondola)C++17
55 / 100
15 ms5976 KiB
#include "gondola.h"
#include<bits/stdc++.h>
using namespace std;

#define ll  long

int valid(int n, int inputSeq[]){
  vector<ll> v(n);
  ll ssf = (ll) pow(10, 10);
  int si;
  unordered_set<int> us;
  for (int i=0; i<n; i++){
    if (us.find(inputSeq[i]) != us.end()) return 0;
    us.insert(inputSeq[i]);
    if (inputSeq[i] < ssf){
      ssf = inputSeq[i];
      si = i;
    }
  }
  if (ssf > n) return 1;
  for (int i=0; i<n; i++){
    v[(ssf+i-1)%n] = inputSeq[(si+i)%n];
    if (v[(ssf+i-1)%n] <= n && v[(ssf+i-1)%n] != i+1) return 0;
  }
  return 1;
}

int replacement(int n, int gondolaSeq[], int replacementSeq[]){
  vector<ll> v(n);
  ll ssf = (ll) pow(10, 10);
  int si;
  for (int i=0; i<n; i++){
    if (gondolaSeq[i] < ssf){
      ssf = gondolaSeq[i];
      si = i;
    }
  }
  if (ssf > n){
    ssf = 1;
    si = 0;
  }
  priority_queue<pair<int,int>> pq;
  for (int i=0; i<n; i++){
    v[(ssf+i-1)%n] = gondolaSeq[(si+i)%n];
    if (v[(ssf+i-1)%n] > n) pq.push({-v[(ssf+i-1)%n], (ssf+i-1)%n});
  }
  int cur = n+1;
  while (!pq.empty()){
    int x = -pq.top().first, i = pq.top().second;
    pq.pop();
    bool nw = true;
    while (cur <= x){
      if (nw) replacementSeq[cur-n-1] = i+1;
      else replacementSeq[cur-n-1] = cur-1;
      nw = false;
      cur++;
    }
  }
  return cur-n-1;
}

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

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