Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //UVa Q10549
- /******************************************************************************
- Online C++ Compiler.
- Code, Compile, Run and Debug C++ program online.
- Write your code in this editor and press "Run" button to compile and execute it.
- *******************************************************************************/
- #include <bits/stdc++.h>
- using namespace std;
- struct wawa{
- int h,d,w;
- }arr[200];
- bool cmp(wawa a, wawa b){
- return (a.h == b.h)? a.d > b.d : a.h > b.h;
- }
- int n;
- vector<int> v[2];
- bool vis[200][200][100];
- bool dfs(int idx){
- if(!v[0].empty() && !v[1].empty() && (vis[v[1].back()][v[0].back()][v[1].size()] || vis[v[0].back()][v[1].back()][v[0].size()]))return 0;
- if(idx == 2 * n)return 1;
- for(int i = 0; i < 2; ++i){
- if(v[i].size() == n)continue;
- if(v[i].empty() || (arr[v[i].back()].h-2*arr[v[i].back()].w >= arr[idx].h && arr[v[i].back()].d-2*arr[v[i].back()].w >= arr[idx].d)){
- v[i].emplace_back(idx);
- if(dfs(idx+1))return 1;
- vis[v[0].back()][v[1].back()][v[0].size()] = true;
- v[i].pop_back();
- }
- }
- return 0;
- }
- int main(){
- int start = 1;
- while(cin >> n){
- if(n == 0)break;
- if(start)start = 0;
- else cout << '\n';
- memset(vis, 0, sizeof(vis));
- v[0].clear();
- v[1].clear();
- for(int i = 0; i < 2*n; ++i)cin >> arr[i].h >> arr[i].d >> arr[i].w;
- sort(arr, arr + 2 *n, cmp);
- dfs(0);
- for(int i = 0; i < v[0].size(); ++i)cout << arr[v[0][i]].h << ' ' << arr[v[0][i]].d << ' ' << arr[v[0][i]].w << '\n';
- cout << '-' << '\n';
- for(int i = 0; i < v[1].size(); ++i)cout << arr[v[1][i]].h << ' ' << arr[v[1][i]].d << ' ' << arr[v[1][i]].w << '\n';
- }
- return 0;
- }
RAW Paste Data