답안 #574681

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
574681 2022-06-09T08:39:03 Z WongChun1234 순열 (APIO22_perm) C++17
100 / 100
3 ms 340 KB
#include "perm.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int pos[100];
vector<int> ret,pres;
void add(int newpos){
	for (auto &i:ret) if (i>=newpos) i++;
	ret.push_back(newpos);
	memset(pos,-1,sizeof(pos));
	for (int i=0;i<ret.size();i++) pos[ret[i]]=i;
}
vector<int> construct_permutation(ll k){
	memset(pos,-1,sizeof(pos));
	ret.clear(); pres.clear();
	while (k){
		pres.push_back(k%4);
		k/=4;
	}
	reverse(pres.begin(),pres.end());
	if (pres[0]==1){
	}else if (pres[0]==2){
		add(0);
	}else if (pres[0]==3){
		add(0);
		add(0);
	}
	for (int i=1;i<pres.size();i++){
		if (pres[i]==0){
			add(ret.size());
			add(ret.size());
		}else if (pres[i]==1){
			add(ret.size());
			add(ret.size());
			add(0);
		}else if (pres[i]==2){
			add(ret.size());
			add(0);
			add(ret.size());
		}else if ((pos[0]==-1)||(pos[1]==-1)||(pos[1]>pos[0])){
			add(ret.size());
			add(0);
			add(ret.size());
			add(0);
		}else{
			add(ret.size());
			add(ret.size());
			add(2);
		}
	}
	return ret;
}

Compilation message

perm.cpp: In function 'void add(int)':
perm.cpp:11:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 |  for (int i=0;i<ret.size();i++) pos[ret[i]]=i;
      |               ~^~~~~~~~~~~
perm.cpp: In function 'std::vector<int> construct_permutation(ll)':
perm.cpp:28:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |  for (int i=1;i<pres.size();i++){
      |               ~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 2 ms 212 KB Output is correct
6 Correct 2 ms 212 KB Output is correct
7 Correct 2 ms 340 KB Output is correct
8 Correct 3 ms 340 KB Output is correct
9 Correct 2 ms 340 KB Output is correct
10 Correct 3 ms 340 KB Output is correct
11 Correct 3 ms 340 KB Output is correct
12 Correct 2 ms 340 KB Output is correct
13 Correct 3 ms 340 KB Output is correct