답안 #1067930

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1067930 2024-08-21T05:39:04 Z sleepntsheep Archery (IOI09_archery) C++17
7 / 100
2000 ms 564 KB
#pragma GCC optimize("O3,unroll-loops")
#include <cstdio>
#include <map>
#include <array>
using namespace std;

using ll = long long;
using ull = unsigned long long;

#define N 1000
#define N_ (2*N)

int n, r, s[N_], ans = 1e9, q[N_], opt;

ull hsh(array<int, N_> &a, int n) {
	constexpr ll BASE = 10001;
	ll z = 0, bp = 1;
	for (int i = 0; i < n; ++i)
		z = (z + bp * a[i]), bp *= BASE;
	return z;
}

array<int, N_> p, e;
int check() {
	for (int i = 0; i < n * 2; ++i) p[i] = q[i];

	map<ull, int> mp;

	for (int ii = 0, jj = 0; jj < r; ++ii, ++jj) {
		ull hh = hsh(p, 2 * n);
		if (mp.count(hh)) {
			int gap = jj - mp[hh];
			int left = r - jj;
			jj += left / gap * gap;
		} else {
			mp[hh] = jj;
		}

		int u = p[0], v = p[1];
		if (s[u] < s[v]) e[0] = u, e[n * 2 - 1] = v;
		else e[0] = v, e[n * 2 - 1] = u;

		for (int j = 2; j < n * 2; j += 2) {
			int u = p[j], v = p[j + 1];
			if (s[u] < s[v]) {
				e[(j - 2) + 1] = u;
				e[j] = v;
			} else {
				e[1 + (j - 2)] = v;
				e[j] = u;
			}
		}
		p=e;
	}

	for (int i = 0; i < N_; ++i) if (e[i] == 0) return (i + 1) / 2;
	__builtin_unreachable();
}

int main() {
	scanf("%d%d", &n, &r);
	if(n>N)return 1;
	for (int i = 0; i < n * 2; ++i)
		scanf("%d", s + i), q[i] = i;

	if (ans >= check()) ans = check(), opt = 1;

	for (int i = 1; i < n * 2; ++i) {
		int o = 0;
		for (int j = 1; j <= i; ++j) q[o++] = j;
		q[o++] = 0;
		for (int j = i + 1; j < n * 2; ++++j) q[o++] = j;

		if (ans >= check()) ans = check(), opt = (i + 2) / 2;
	}

	printf("%d", opt);
}


Compilation message

archery.cpp: In function 'int main()':
archery.cpp:61:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   61 |  scanf("%d%d", &n, &r);
      |  ~~~~~^~~~~~~~~~~~~~~~
archery.cpp:64:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   64 |   scanf("%d", s + i), q[i] = i;
      |   ~~~~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
3 Incorrect 29 ms 348 KB Output isn't correct
4 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
5 Correct 0 ms 348 KB Output is correct
6 Correct 156 ms 444 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 344 KB Output is correct
2 Incorrect 205 ms 348 KB Output isn't correct
3 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
4 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
5 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
6 Incorrect 178 ms 440 KB Output isn't correct
7 Execution timed out 2087 ms 564 KB Time limit exceeded
8 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
9 Runtime error 1 ms 348 KB Execution failed because the return code was nonzero
10 Runtime error 0 ms 504 KB Execution failed because the return code was nonzero
11 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
12 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
13 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
14 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
15 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
16 Incorrect 187 ms 348 KB Output isn't correct
17 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
18 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
19 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
20 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
21 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
22 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
23 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
24 Incorrect 201 ms 348 KB Output isn't correct
25 Execution timed out 2041 ms 348 KB Time limit exceeded
26 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
27 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
28 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
29 Runtime error 0 ms 344 KB Execution failed because the return code was nonzero
30 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
31 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
32 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
33 Incorrect 198 ms 440 KB Output isn't correct
34 Correct 164 ms 348 KB Output is correct
35 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
36 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
37 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
38 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
39 Incorrect 163 ms 436 KB Output isn't correct
40 Execution timed out 2019 ms 348 KB Time limit exceeded
41 Runtime error 0 ms 344 KB Execution failed because the return code was nonzero
42 Runtime error 1 ms 348 KB Execution failed because the return code was nonzero
43 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
44 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
45 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
46 Runtime error 0 ms 348 KB Execution failed because the return code was nonzero
47 Runtime error 1 ms 344 KB Execution failed because the return code was nonzero