Submission #579784

#TimeUsernameProblemLanguageResultExecution timeMemory
5797841neGondola (IOI14_gondola)C++14
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;
#include "gondola.h"

int valid(int n, int inputSeq[])
{
	int index = -1;
  for (int i = 0;i<n;++i){
	if (inputSeq[i] <=n){
		index = i;
	}
  }
  map<int,int>visited;
  if (index == -1){
	for (int i = 0;i<n;++i){
		int x = inputSeq[i];
		if (visited[x])return 0;
		visited[x] = true;
	}
	return 1;
  }
  for (int i = 0;i<n;++i){
	int j = (i + index)%n;
	int temp = inputSeq[index] + i;
	if (temp > n)temp = temp % n;
	if (visited[temp] || visited[inputSeq[j]])return 0;
	visited[temp] = true;
	visited[inputSeq[j]] = true;
  }
  return 1;
}

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

int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
  int index = -1;
  	int maxxy = 1;
  for (int i = 0;i<n;++i){
	if (gondolaSeq[i] <=n){
		index = i;
	}
	maxxy = max(gondolaSeq[i],maxxy);
  }
  map<int,int>visited;
  if (index == -1){
	  for (int i = 0;i<n;++i){
		visited[gondolaSeq[i]] = true;
	  }
	  int cur = 0;
	  for (int i = 1;i<=maxxy;++i){
		if (!visited[i])replacementSeq[cur++] = i; 
	  }
	  return cur;
  }
  int extra = n + 1;
  for (int i = 0;i<n;++i){
	visited[gondolaSeq[i]] = i + 1;
  }
  int cur = 0;
  for (int i = 0;i<n;){
	int j = (i + index)%n;
	int temp = gondolaSeq[index] + i;
	if (temp > n)temp = temp % n;
	if (gondolaSeq[j] == temp){
		++i;
		continue;
	}
	if (visited[extra] && extra!=gondolaSeq[j]){
		int temp2 = visited[extra] - index;
		if (temp2 <= 0)temp2+=n;
		temp2 = gondolaSeq[index] + temp2;
		if (temp2 > n)temp2 = temp2 % n;
		replacementSeq[cur++] = temp2;
		extra++;
	}
	else{
		replacementSeq[cur++] = temp;
		while(!visited[extra]){
			replacementSeq[cur++] = extra++;
		}
		extra++;
		++i;
	}
  }
  return cur;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/cc6sBv7y.o: in function `main':
grader.cpp:(.text.startup+0x108): undefined reference to `countReplacement'
collect2: error: ld returned 1 exit status