답안 #370499

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
370499 2021-02-24T04:43:33 Z fhvirus "The Lyuboyn" code (IZhO19_lyuboyn) C++17
52 / 100
264 ms 7668 KB
// Knapsack DP is harder than FFT.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii; typedef pair<ll, ll> pll;
#define ff first
#define ss second
#define pb emplace_back
#define FOR(i,n) for(int i = 0; i < (n); ++i)
#define FOO(i,a,b) for(int i = (a); i <= (b); ++i)
#define AI(x) (x).begin(),(x).end()
template<typename I> bool chmax(I &a, I b){ return a < b ? (a = b, true) : false;}
template<typename I> bool chmin(I &a, I b){ return a > b ? (a = b, true) : false;}
#ifdef OWO
#define debug(args...) LKJ("[ " + string(#args) + " ]", args)
void LKJ(){ cerr << endl;}
template<typename I, typename...T> void LKJ(I&&x, T&&...t){ cerr<<x<<", ", LKJ(t...);}
template<typename I> void DE(I a, I b){ while(a < b) cerr<<*a<<" \n"[next(a)==b], ++a;}
#else
#define debug(...) 0
#define DE(...) 0
#endif

void printb(int n, vector<int> v){
	cout << v.size() << '\n';
	for(auto i: v){
		for(int j = n - 1; j >= 0; --j)
			cout << ((i & (1<<j)) ? 1 : 0);
		cout << '\n';
	}
}
void solvek1(int n, vector<int> & ans){
	ans = {0, 1};
	FOO(i,2,n){
		vector<int> b = ans;
		reverse(AI(b));
		for(auto &j: b) j += (1<<(i-1));
		for(auto j: b) ans.pb(j);
	}
	return;
}
void addk(int k, int n, vector<int>& v){
	assert(k % 2 == 0);
	if(k <= 0) return;
	vector<int> h; solvek1(k, h);
	vector<int> ans;
	int msk = (((1<<k)-1) << n);
	FOR(st, h.size()){
		FOR(x, v.size()){
			int id = st + x; if(id >= v.size()) id -= v.size();
			int i = v[id];
			i ^= (h[st]<<n);
			if(x & 1) i ^= msk;
			ans.pb(i);
		}
	}
	ans.swap(v);
	return;
}
int tobin(string s){
	int ans = 0;
	for(int i = 0; i < s.size(); ++i)
		if(s[s.size() - 1 - i] == '1')
			ans += (1<<i);
	return ans;
}
int n, k, t;
string ss;

int32_t main(){
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin >> n >> k >> t >> ss;
	if(k % 2 == 0){
		puts("-1");
		return 0;
	}

	vector<int> ans;
	solvek1(n - k + 1, ans);

	addk(k - 1, n - k + 1, ans);

	int s = tobin(ss);
	FOR(i,ans.size()) if(ans[i] == s){
		rotate(ans.begin(), ans.begin() + i, ans.end());
		break;
	}
	
	printb(n, ans);
	return 0;
}

Compilation message

lyuboyn.cpp: In function 'void addk(int, int, std::vector<int>&)':
lyuboyn.cpp:9:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 | #define FOR(i,n) for(int i = 0; i < (n); ++i)
      |                                   ^
lyuboyn.cpp:48:2: note: in expansion of macro 'FOR'
   48 |  FOR(st, h.size()){
      |  ^~~
lyuboyn.cpp:9:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 | #define FOR(i,n) for(int i = 0; i < (n); ++i)
      |                                   ^
lyuboyn.cpp:49:3: note: in expansion of macro 'FOR'
   49 |   FOR(x, v.size()){
      |   ^~~
lyuboyn.cpp:50:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |    int id = st + x; if(id >= v.size()) id -= v.size();
      |                        ~~~^~~~~~~~~~~
lyuboyn.cpp: In function 'int tobin(std::string)':
lyuboyn.cpp:62:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |  for(int i = 0; i < s.size(); ++i)
      |                 ~~^~~~~~~~~~
lyuboyn.cpp: In function 'int32_t main()':
lyuboyn.cpp:9:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 | #define FOR(i,n) for(int i = 0; i < (n); ++i)
      |                                   ^
lyuboyn.cpp:84:2: note: in expansion of macro 'FOR'
   84 |  FOR(i,ans.size()) if(ans[i] == s){
      |  ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Ok
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 364 KB Ok
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Ok
2 Correct 1 ms 364 KB Ok
3 Correct 0 ms 364 KB Ok
4 Correct 0 ms 364 KB Ok
5 Correct 1 ms 364 KB Ok
6 Correct 0 ms 364 KB Ok
7 Correct 0 ms 364 KB Ok
8 Correct 1 ms 364 KB Ok
# 결과 실행 시간 메모리 Grader output
1 Correct 262 ms 7644 KB Ok
2 Correct 123 ms 3856 KB Ok
3 Correct 1 ms 364 KB Ok
4 Correct 1 ms 364 KB Ok
5 Correct 1 ms 364 KB Ok
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Ok
2 Correct 9 ms 492 KB Ok
3 Correct 128 ms 4196 KB Ok
4 Correct 60 ms 2024 KB Ok
5 Correct 1 ms 364 KB Ok
6 Correct 2 ms 364 KB Ok
7 Correct 30 ms 1100 KB Ok
8 Correct 1 ms 364 KB Ok
# 결과 실행 시간 메모리 Grader output
1 Correct 264 ms 7668 KB Ok
2 Correct 263 ms 7648 KB Ok
3 Correct 262 ms 7516 KB Ok
4 Correct 124 ms 3952 KB Ok
5 Correct 125 ms 4196 KB Ok
6 Correct 59 ms 2140 KB Ok
7 Correct 58 ms 2156 KB Ok
8 Correct 29 ms 1100 KB Ok
9 Correct 28 ms 1132 KB Ok
10 Correct 16 ms 748 KB Ok
11 Correct 1 ms 364 KB Ok
12 Correct 1 ms 364 KB Ok
13 Correct 1 ms 364 KB Ok
# 결과 실행 시간 메모리 Grader output
1 Correct 262 ms 7644 KB Ok
2 Correct 123 ms 3856 KB Ok
3 Correct 1 ms 364 KB Ok
4 Correct 1 ms 364 KB Ok
5 Correct 1 ms 364 KB Ok
6 Correct 1 ms 364 KB Ok
7 Correct 9 ms 492 KB Ok
8 Correct 128 ms 4196 KB Ok
9 Correct 60 ms 2024 KB Ok
10 Correct 1 ms 364 KB Ok
11 Correct 2 ms 364 KB Ok
12 Correct 30 ms 1100 KB Ok
13 Correct 1 ms 364 KB Ok
14 Correct 264 ms 7668 KB Ok
15 Correct 263 ms 7648 KB Ok
16 Correct 262 ms 7516 KB Ok
17 Correct 124 ms 3952 KB Ok
18 Correct 125 ms 4196 KB Ok
19 Correct 59 ms 2140 KB Ok
20 Correct 58 ms 2156 KB Ok
21 Correct 29 ms 1100 KB Ok
22 Correct 28 ms 1132 KB Ok
23 Correct 16 ms 748 KB Ok
24 Correct 1 ms 364 KB Ok
25 Correct 1 ms 364 KB Ok
26 Correct 1 ms 364 KB Ok
27 Runtime error 4 ms 2400 KB Execution killed with signal 11
28 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 125 ms 4124 KB The values in the output sequence are not pairwise distinct!
2 Halted 0 ms 0 KB -