Submission #136574

# Submission time Handle Problem Language Result Execution time Memory
136574 2019-07-25T15:32:35 Z mosesmayer Gondola (IOI14_gondola) C++17
20 / 100
22 ms 1916 KB
#include "gondola.h"
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define eb emplace_back
#define ALL(x) x.begin(), x.end()
using namespace std;
typedef vector<int> vi;
typedef pair<int,int> pii;

int valid(int n, int inputSeq[]){
	vi a(inputSeq, inputSeq + n);

	// handle whether all values are unique
	vi b(a.begin(), a.end());
	sort(ALL(b)); b.erase(unique(ALL(b)), b.end());
	if (b.size() != a.size()) return 0;

	// handle min element
	vi::iterator mnit = min_element(a.begin(), a.end());
	int mn = *mnit, pos = mnit - a.begin();
	if (mn >= n) return 1;
	
	// rotate elements so that min is at first position.
	// now index i will be original position of (mn + i - 1)%n + 1;
	rotate(a.begin(), a.begin() + pos, a.end());
	// validity check
	for (int i = 0; i < n; i++){
		if (a[i] > n) continue;
		if (a[i] != ((mn + i - 1) % n + 1)) return 0;
	}
	return 1;
}

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

int replacement(int n, int gondolaSeq[], int replacementSeq[]){
	vi a(gondolaSeq, gondolaSeq + n);
	// get length
	int len = (*max_element(a.begin(), a.end())) - n;

	vi::iterator mnit = min_element(a.begin(), a.end());
	int mn = *mnit, pos = mnit - a.begin();

	if (mn < n){
		rotate(a.begin(), a.begin() + pos, a.end());
	} else {
		pos = 0;
	}
	vector<pii> rep; // to be replaced
	for (int i = 0; i < n; i++){
		int oriNum = (mn + i - 1) % n + 1;
		if (a[i] > n || a[i] != ((mn + i - 1) % n + 1)){
			rep.eb(a[i], oriNum);
		}
	}
	sort(rep.begin(), rep.end());
	int cur = n+1, idx = 0;
	for (int i = 0; i < rep.size(); i++){
		int prv = rep[i].se;
		while (cur <= rep[i].fi){
			replacementSeq[idx++] = prv;
			prv = cur;
			cur++;
		}
	}
	return len;
}

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

int countReplacement(int n, int inputSeq[]){
	return -3;
}

Compilation message

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:60:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < rep.size(); i++){
                  ~~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 1 ms 352 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 10 ms 1016 KB Output is correct
7 Correct 21 ms 1784 KB Output is correct
8 Correct 14 ms 1528 KB Output is correct
9 Correct 7 ms 760 KB Output is correct
10 Correct 21 ms 1912 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 504 KB Output is correct
6 Correct 10 ms 1016 KB Output is correct
7 Correct 21 ms 1916 KB Output is correct
8 Correct 14 ms 1528 KB Output is correct
9 Correct 7 ms 760 KB Output is correct
10 Correct 20 ms 1784 KB Output is correct
11 Correct 3 ms 376 KB Output is correct
12 Correct 3 ms 376 KB Output is correct
13 Correct 12 ms 1016 KB Output is correct
14 Correct 8 ms 376 KB Output is correct
15 Correct 22 ms 1784 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Incorrect 2 ms 376 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Incorrect 2 ms 376 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Incorrect 2 ms 256 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 440 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 256 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 376 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 376 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -