답안 #590147

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
590147 2022-07-05T14:57:51 Z fabijan_cikac Art Collections (BOI22_art) C++17
0 / 100
3000 ms 208 KB
#include <bits/stdc++.h>

using namespace std;

#include "art.h"

const int MAXN = 4010;

/*int publish(vector<int> v){
	cout << "u: ";
	for (int i = 0; i < v.size(); ++i)
		cout << v[i] << ' ';
	cout << endl;
	int x; cin >> x; return x;
}

void answer(vector<int> v){
	for (int i = 0; i < v.size(); ++i) cout << v[i] << ' ';
}*/

int l[MAXN]; int bio[MAXN] = { 0 };
void solve(int N){
	vector<int> sol; vector<int> v; vector<int> sol2;
	for (int i = 1; i <= N; ++i)
		v.push_back(i);
	for (int i = 0; i < N; ++i){
		l[i] = publish(v); reverse(v.begin(), v.end());
		v.pop_back(); reverse(v.begin(), v.end()); v.push_back(i + 1);
	}
	int num = 0;
	for (int i = 0; i < N - 1; ++i){
		int x = 0; /*cout << "a: ";
		for (int j = 0; j < N; ++j){
			cout << l[j] << ' ';
		}*/
		//cout << endl;
		while (l[(x + 1) % N] - l[x] != N - i - 1) ++x;
		//cout << ':' << x << endl;
		bio[x] = 1;
		if (l[(x + 1) % N] - l[x] != N - i - 1)
			sol2.push_back(x + 1);
		else sol.push_back(x + 1);
		int add = -1;
		if (l[(x + 1) % N] - l[x] != N - i - 1) add = 1;
		int kx = (x + add + N) % N; int cnt = 1;
		while (kx != x){
			l[kx] -= (cnt - num); ++cnt; kx = (kx + add + N) % N;
		}
		++num;
	}
	reverse(sol2.begin(), sol2.end());
	for (int i = 0; i < N; ++i){
		if (!bio[i]) sol.push_back(i + 1);
	}
	for (int i = 0; i < sol2.size(); ++i)
		sol.push_back(sol2[i]);
	answer(sol);
}

/*int main(){
	solve(3);
}*/

Compilation message

art.cpp: In function 'void solve(int)':
art.cpp:55:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |  for (int i = 0; i < sol2.size(); ++i)
      |                  ~~^~~~~~~~~~~~~
interface.cpp: In function 'int publish(std::vector<int>)':
interface.cpp:20:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   20 |     if(v.size() != N) {
      |        ~~~~~~~~~^~~~
interface.cpp: In function 'void answer(std::vector<int>)':
interface.cpp:36:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   36 |     if(v.size() != N) {
      |        ~~~~~~~~~^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Execution timed out 3045 ms 208 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Execution timed out 3045 ms 208 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Execution timed out 3045 ms 208 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Execution timed out 3045 ms 208 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Execution timed out 3045 ms 208 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Execution timed out 3045 ms 208 KB Time limit exceeded
4 Halted 0 ms 0 KB -