답안 #400462

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
400462 2021-05-08T05:40:07 Z galca MalnaRISC (COI21_malnarisc) C++14
0 / 100
2 ms 332 KB
#include <iostream>
#include <vector>
using namespace std;

int main() {
	int N;
	cin >> N;

	int n = N;
	while (n & (n - 1)) {
		n++;
	}

   vector<int> regs(n);
   for (int i=0; i<n; i++) {
	  regs[i] = i+1;
   }  

   vector<int> stage;
   vector<int> r1;
   vector<int> r2;

   int curr_stage = 0;

   for (int k = 2; k <= n; k *= 2) {
	   
	   for (int j = k / 2; j > 0; j /= 2) {
		   cout << endl;
		   for (int i = 0; i < n; i++) {
			   int ip = i ^ j;
			   if (ip > i) {
				   int reg1 = regs[i];
				   int reg2 = regs[ip];
				   if ((reg1 <= N) && (reg2 <= N)) {
					   stage.push_back(curr_stage);
					   r1.push_back(reg1);
					   r2.push_back(reg2);
					   //cout << "CMPSWP R" << reg1 << " R" << reg2 << endl;
				   }
			   }
		   }
		   ++curr_stage;
	   }
	   int odd = 0;
	   for (int i = 0; i < n; i += k) {
		   if (odd) {
			   for (int j = 0; j < k / 2; j++) {
				   int tmp = regs[i + j];
				   regs[i + j] = regs[i + k - j - 1];
				   regs[i + k - j - 1] = tmp;
			   }
		   }
		   odd ^= 1;
	   }
   }
   
   cout << curr_stage << endl;
   curr_stage = 0;
   for (int i = 0; i < r1.size(); i++) {
	   if (stage[i] != curr_stage) {
		   cout << endl;
	   }
	   curr_stage = stage[i];
	   cout << "CMPSWP R" << r1[i] << " R" << r2[i] << " ";
   }
   return 0;
}

Compilation message

malnarisc.cpp: In function 'int main()':
malnarisc.cpp:59:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |    for (int i = 0; i < r1.size(); i++) {
      |                    ~~^~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB not sorted
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB not sorted
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB not sorted
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB not sorted
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB not sorted
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB not sorted
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 204 KB not sorted
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 332 KB not sorted
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 332 KB not sorted
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 332 KB not sorted