<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=TugOfWar%2F%EB%AC%B8%EB%B3%B4%EC%B0%BD</id>
	<title>TugOfWar/문보창 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=TugOfWar%2F%EB%AC%B8%EB%B3%B4%EC%B0%BD"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=TugOfWar/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;action=history"/>
	<updated>2026-05-14T16:29:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=TugOfWar/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=39785&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:28, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=TugOfWar/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=39785&amp;oldid=prev"/>
		<updated>2021-02-07T05:28:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==== 소감 ====&lt;br /&gt;
2005/02/19 Accepted 0:00.002 64 &lt;br /&gt;
백트래킹문제. 따져줘야 하는 가지수가 적은 경우 최적화된 알고리즘을 찾는 것 보다는 그 가지수를 모두 따지는 것이 유리할 수도 있다.&lt;br /&gt;
==== 코드 ====&lt;br /&gt;
 // no10032 - Tug of War&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt; &lt;br /&gt;
 #include &amp;amp;lt;cstdlib&amp;amp;gt; &lt;br /&gt;
 using namespace std; &lt;br /&gt;
 &lt;br /&gt;
 struct TugWar &lt;br /&gt;
 { &lt;br /&gt;
 	int left; &lt;br /&gt;
 	int right; &lt;br /&gt;
 }; &lt;br /&gt;
 &lt;br /&gt;
 const int MAX_CASE = 100;&lt;br /&gt;
 const int MAX = 100; &lt;br /&gt;
 &lt;br /&gt;
 inline void eatline() { while(cin.get() != &amp;#039;\n&amp;#039;) continue; }; &lt;br /&gt;
 inline int comp(const void *i,const void *j) { return *(int *)i-*(int *)j; }; &lt;br /&gt;
 &lt;br /&gt;
 int main() &lt;br /&gt;
 { &lt;br /&gt;
 	int nCase; &lt;br /&gt;
 	int weight[MAX]; &lt;br /&gt;
 	int left[MAX/2]; &lt;br /&gt;
 	int right[MAX/2]; &lt;br /&gt;
 	&lt;br /&gt;
 	int nPeople; &lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; nCase; &lt;br /&gt;
 	TugWar tugwar[MAX_CASE]; &lt;br /&gt;
 	int i, j, k; &lt;br /&gt;
 	int sumleft, sumright; &lt;br /&gt;
 	int lcount, rcount; &lt;br /&gt;
 	int tempSwap; &lt;br /&gt;
 	for (i=0; i&amp;amp;lt;nCase; i++) &lt;br /&gt;
 	{ &lt;br /&gt;
 		eatline(); &lt;br /&gt;
 		eatline(); &lt;br /&gt;
 		cin &amp;amp;gt;&amp;amp;gt; nPeople; &lt;br /&gt;
 		for (j=0; j&amp;amp;lt;nPeople; j++) &lt;br /&gt;
 		{ &lt;br /&gt;
 			cin &amp;amp;gt;&amp;amp;gt; weight[j]; &lt;br /&gt;
 		} &lt;br /&gt;
 		qsort(weight, nPeople, sizeof(int), comp); &lt;br /&gt;
 		sumleft = sumright = 0; &lt;br /&gt;
 		lcount = rcount = 0; &lt;br /&gt;
 		for (j=nPeople-1; j&amp;amp;gt;=0; j--) &lt;br /&gt;
 		{ &lt;br /&gt;
 			if (sumleft &amp;amp;lt;= sumright) &lt;br /&gt;
 			{ &lt;br /&gt;
 				left[lcount++] = weight[j]; &lt;br /&gt;
 				sumleft += weight[j]; &lt;br /&gt;
 				if (j != 0) &lt;br /&gt;
 				{ &lt;br /&gt;
 					right[rcount++] = weight[j-1]; &lt;br /&gt;
 					sumright += weight[j-1]; &lt;br /&gt;
 					j--; &lt;br /&gt;
 				}                                        &lt;br /&gt;
 			} &lt;br /&gt;
 			else &lt;br /&gt;
 			{ &lt;br /&gt;
 				right[rcount++] = weight[j]; &lt;br /&gt;
 				sumright += weight[j]; &lt;br /&gt;
 				if (j != 0) &lt;br /&gt;
 				{ &lt;br /&gt;
 					left[lcount++] = weight[j-1]; &lt;br /&gt;
 					sumleft += weight[j-1]; &lt;br /&gt;
 					j--; &lt;br /&gt;
 				} &lt;br /&gt;
 			} &lt;br /&gt;
 		} &lt;br /&gt;
 		int gap = sumleft - sumright; &lt;br /&gt;
 		if (gap == 0) &lt;br /&gt;
 		{ &lt;br /&gt;
 			tugwar[i].left = sumleft; &lt;br /&gt;
 			tugwar[i].right = sumright; &lt;br /&gt;
 			continue; &lt;br /&gt;
 		} &lt;br /&gt;
 		for (j=0; j&amp;amp;lt;lcount; j++) &lt;br /&gt;
 		{ &lt;br /&gt;
 			for (k=0; k&amp;amp;lt;rcount; k++) &lt;br /&gt;
 			{ &lt;br /&gt;
 				if (gap &amp;amp;lt; 0)                                    // 왼쪽편이 가벼울때 &lt;br /&gt;
 				{ &lt;br /&gt;
 					if (abs(gap) &amp;amp;gt; abs(abs(gap) - (2 * (right[k] - left[j])))) &lt;br /&gt;
 					{ &lt;br /&gt;
 						sumleft += right[k] - left[j]; &lt;br /&gt;
 						sumright -= right[k] - left[j]; &lt;br /&gt;
 						tempSwap = left[j]; &lt;br /&gt;
 						left[j] = right[k]; &lt;br /&gt;
 						right[k] = tempSwap; &lt;br /&gt;
 						gap = sumleft - sumright; &lt;br /&gt;
 						break; &lt;br /&gt;
 					} &lt;br /&gt;
 				} &lt;br /&gt;
 				else                                                    // 왼쪽편이 무거울때 &lt;br /&gt;
 				{ &lt;br /&gt;
 					if (gap &amp;amp;gt; abs(gap - (2 * (left[j] - right[k])))) &lt;br /&gt;
 					{ &lt;br /&gt;
 						sumleft -= left[j] - right[k]; &lt;br /&gt;
 						sumright += left[j] - right[k]; &lt;br /&gt;
 						tempSwap = left[j]; &lt;br /&gt;
 						left[j] = right[k]; &lt;br /&gt;
 						right[k] = tempSwap; &lt;br /&gt;
 						gap = sumleft - sumright; &lt;br /&gt;
 						break; &lt;br /&gt;
 					} &lt;br /&gt;
 				} &lt;br /&gt;
 			} &lt;br /&gt;
 		} &lt;br /&gt;
 		if (sumleft &amp;amp;gt; sumright) &lt;br /&gt;
 		{ &lt;br /&gt;
 			tempSwap = sumleft; &lt;br /&gt;
 			sumleft = sumright; &lt;br /&gt;
 			sumright = tempSwap; &lt;br /&gt;
 		} &lt;br /&gt;
 		tugwar[i].left = sumleft; &lt;br /&gt;
 		tugwar[i].right = sumright; &lt;br /&gt;
 	} &lt;br /&gt;
 	&lt;br /&gt;
 	for (i=0; i&amp;amp;lt;nCase; i++) &lt;br /&gt;
 	{ &lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; tugwar[i].left &amp;amp;lt;&amp;amp;lt; &amp;quot; &amp;quot; &amp;amp;lt;&amp;amp;lt; tugwar[i].right &amp;amp;lt;&amp;amp;lt; endl; &lt;br /&gt;
 		if (i != nCase - 1) &lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; endl; &lt;br /&gt;
 	} &lt;br /&gt;
 	return 0; &lt;br /&gt;
 }&lt;br /&gt;
----&lt;br /&gt;
[[TugOfWar]] [[문보창]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>