Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. typedef long long ll;
  6. int n;
  7. vector<int> a, state;
  8. vector<vector<int>> res(3, vector<int>(0));
  9. void f(int ind, int sum1, int sum2, int sum3){
  10.     if (res[0].size() > 0) return;
  11.     if (ind == n && sum1 == sum2 && sum1 == sum3){
  12.         for (int i = 0; i < n; ++i){
  13.             if (state[i] == 1) res[0].push_back(i+1);
  14.             else if (state[i] == 2) res[1].push_back(i+1);
  15.             else res[2].push_back(i+1);
  16.         }
  17.     }
  18.     else if (ind < n){
  19.         state[ind] = 1;
  20.         f(ind+1, sum1+a[ind], sum2, sum3);
  21.         state[ind] = 2;
  22.         f(ind+1, sum1, sum2+a[ind], sum3);
  23.         state[ind] = 3;
  24.         f(ind+1, sum1, sum2, sum3+a[ind]);
  25.     }
  26. }
  27.  
  28. int main(){
  29.     ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  30.     cin >> n;
  31.     a.resize(n); state.resize(n);
  32.     for (int i = 0; i < n; ++i)
  33.         cin >> a[i];
  34.     f(0, 0, 0, 0);
  35.     if (res[0].size() == 0){
  36.         cout << "No solution";
  37.         return 0;
  38.     }
  39.     for (int i = 0; i < 3; ++i){
  40.         for (int j = 0; j < res[i].size(); ++j){
  41.             cout << res[i][j] << ' ';
  42.         }
  43.         cout << '\n';
  44.     }
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement