Submission #739251

#TimeUsernameProblemLanguageResultExecution timeMemory
739251NeroZeinGondola (IOI14_gondola)C++17
15 / 100
11 ms5004 KiB
#include "gondola.h"
#include <bits/stdc++.h> 
using namespace std; 

int valid(int n, int inputSeq[]) {
	vector<bool> vis; 
	function<bool(int, int, int)> Go = [&](int id, int cur, int step) {
		if (id < 0 || id >= n) {
			return true; 
		}
		if (vis[inputSeq[id]]) {
			return false; 
		}
		vis[inputSeq[id]] = true; 
		if (cur == 0) cur = n; 
		if (cur == n + 1) cur = 1; 
		if (inputSeq[id] <= n && inputSeq[id] != cur) {
			return false; 
		}
		return Go(id + step, cur + step, step); 
	}; 
	int mx = 0;
	for (int i = 0; i < n; ++i) {
		mx = max(mx, inputSeq[i]); 
	}
	vis.resize(mx + 1); 
	bool ret = true; 
  for (int i = 0; i < n; ++i) {
		if (inputSeq[i] <= n) {
			ret &= Go(i, inputSeq[i], 1);
			vis[inputSeq[i]] = 0;  
			ret &= Go(i, inputSeq[i], -1); 
			break; 
		}
	}
	return ret;
}

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

int replacement(int n, int gondolaSeq[], int replacementSeq[]) {
	int mx = 0;
  for (int i = 0; i < n; ++i) {
		mx = max(mx, gondolaSeq[i]); 
	}
	vector<bool> vis(mx + 1);
	for (int i = 0; i < n; ++i) {
		vis[gondolaSeq[i]] = true; 
	}  
	int ans = 0; 
	for (int i = 1; i <= mx; ++i) {
		if (!vis[i]) {
			replacementSeq[ans++] = i;  
		}
	}
	return ans; 
}

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

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