Language: C++

/*input

*/


// assic value of ('0'-'9') is(48 - 57) and (a-z) is (97-122) and (A-Z) is(65-90) and 32 for space
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#include<bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
using namespace std;

// order_of_key (k) : Number of items strictly smaller than k .
// find_by_order(k) : K-th element in a set (counting from zero).
using namespace __gnu_pbds;
template<class T> using oset=tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

#define ll          long long int
#define pb          push_back
#define pii         pair<ll ,ll >
#define vpii        vector< pii >
#define vi          vector<ll >
#define vs			vector< string >
#define vvi         vector< vector< ll > >
#define inf			(ll)1e18
#define all(it,a)   for(auto it=(a).begin();it!=(a).end();it++) 
#define F           first
#define S           second
#define sz(x)       (ll )x.size()
#define rep(i,a,b)	for(ll  i=a;i<b;i++)
#define repr(i,a,b) for(ll  i=a;i>b;i--)
#define lbnd        lower_bound
#define ubnd        upper_bound
#define mp          make_pair
#define whatis(x)   cout << #x << " is " << x << "\n";
#define graph(n)    adj(n,vector< ll > () )
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

#define debug(x)     cout << #x << " " << x << endl;
#define debug_p(x)   cout << #x << " " << x.F << " " << x.S << endl;
#define debug_v(x)   {cout << #x << " "; for (auto ioi : x) cout << ioi << " "; cout << endl;}
#define debug_vp(x)  {cout << #x << " "; for (auto ioi : x) cout << '[' << ioi.F << " " << ioi.S << ']'; cout << endl;}
#define debug_v_v(x) {cout << #x << "/*\n"; for (auto ioi : x) { for (auto ioi2 : ioi) cout << ioi2 << " "; cout << '\n';} cout << "*/" << #x << endl;}

struct res
{
public:
	ll X,Y,P;
	res(ll x=-1,ll y=-1,ll p=-1): X(x),Y(y),P(p) {};
};

ll fun(ll mask,ll bit)
{
	return (mask>>bit)&1;
}

ll n;
vector<res> a;
vi ans;

ll fun2(ll mask,ll subMask)
{
	ll dist = 0;
	vvi bit(2,vi ());
	rep(i,0,n)  bit[fun(mask,i)].pb(i);

	rep(ii,0,sz(bit[0]))
	{
		ll i = bit[0][ii];
		ll temp = min(abs(a[i].X),abs(a[i].Y))*a[i].P;
		rep(jj,0,sz(bit[1]))
		{
			ll j = bit[1][jj];
			if(!fun(mask,j)) continue;
			if(fun(subMask,j)) temp=min(temp,abs(a[i].Y-a[j].Y)*a[i].P);
			else temp=min(temp,abs(a[i].X-a[j].X)*a[i].P);
		} 

		dist+=temp;
	}
	ll n1=sz(bit[1]);
	ans[n1]=min(ans[n1],dist);
	return 0;
}



int solve()
{
	cin>>n;
	a.resize(n);
	ans.assign(n+1,inf);

	rep(i,0,n)
	{
		ll x,y,p;
		cin>>x>>y>>p;
		a[i]=res(x,y,p);
	}


	rep(mask,0,(1ll<<n))
	{
		fun2(mask,0ll);
		for(ll subMask = mask;subMask>0;subMask = (subMask-1)&mask) fun2(mask,subMask);
	}

	rep(i,0,n+1) cout<<ans[i]<<"\n";


	return 0;
}

int main()
{
	auto start = chrono::high_resolution_clock::now();

    // freopen("input.txt","r",stdin);
    // freopen("output.txt","w",stdout);
	
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	ll test_cases=1;
	//cin>>test_cases;
	while(test_cases--)
		solve();

	auto stop = chrono::high_resolution_clock::now();
	auto duration = chrono::duration_cast<chrono::milliseconds>(stop-start);
	//cout<<"\nduration: "<<(double)duration.count()<<" milliseconds";
}

Compiler output:
a.cc:17:17: error: '__gnu_pbds' is not a namespace-name
   17 | using namespace __gnu_pbds;
      |                 ^~~~~~~~~~
a.cc:18:30: error: 'tree' does not name a type
   18 | template<class T> using oset=tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
      |                              ^~~~