Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- int n;
- vector<int> a, state;
- vector<vector<int>> res(3, vector<int>(0));
- void f(int ind, int sum1, int sum2, int sum3){
- if (res[0].size() > 0) return;
- if (ind == n && sum1 == sum2 && sum1 == sum3){
- for (int i = 0; i < n; ++i){
- if (state[i] == 1) res[0].push_back(i+1);
- else if (state[i] == 2) res[1].push_back(i+1);
- else res[2].push_back(i+1);
- }
- }
- else if (ind < n){
- state[ind] = 1;
- f(ind+1, sum1+a[ind], sum2, sum3);
- state[ind] = 2;
- f(ind+1, sum1, sum2+a[ind], sum3);
- state[ind] = 3;
- f(ind+1, sum1, sum2, sum3+a[ind]);
- }
- }
- int main(){
- ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
- cin >> n;
- a.resize(n); state.resize(n);
- for (int i = 0; i < n; ++i)
- cin >> a[i];
- f(0, 0, 0, 0);
- if (res[0].size() == 0){
- cout << "No solution";
- return 0;
- }
- for (int i = 0; i < 3; ++i){
- for (int j = 0; j < res[i].size(); ++j){
- cout << res[i][j] << ' ';
- }
- cout << '\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement