<?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=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4%2F%EB%AC%B8%EC%A0%9CD</id>
	<title>2002년도ACM문제샘플풀이/문제D - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4%2F%EB%AC%B8%EC%A0%9CD"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4/%EB%AC%B8%EC%A0%9CD&amp;action=history"/>
	<updated>2026-05-15T06:50:16Z</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=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4/%EB%AC%B8%EC%A0%9CD&amp;diff=26146&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:22, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=2002%EB%85%84%EB%8F%84ACM%EB%AC%B8%EC%A0%9C%EC%83%98%ED%94%8C%ED%92%80%EC%9D%B4/%EB%AC%B8%EC%A0%9CD&amp;diff=26146&amp;oldid=prev"/>
		<updated>2021-02-07T05:22:09Z</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;__TOC__&lt;br /&gt;
&lt;br /&gt;
= 상규, 재동 =&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;algorithm&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;functional&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 struct InputData&lt;br /&gt;
 {&lt;br /&gt;
 	int n;&lt;br /&gt;
 	int x;&lt;br /&gt;
 	int weight[30];&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 int numberOfData;&lt;br /&gt;
 InputData inputData[10];&lt;br /&gt;
 bool outputData[10];&lt;br /&gt;
 &lt;br /&gt;
 void input()&lt;br /&gt;
 {&lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; numberOfData;&lt;br /&gt;
 &lt;br /&gt;
 	for(int i = 0 ; i &amp;amp;lt; numberOfData ; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		cin &amp;amp;gt;&amp;amp;gt; inputData[i].n;&lt;br /&gt;
 		cin &amp;amp;gt;&amp;amp;gt; inputData[i].x;&lt;br /&gt;
 &lt;br /&gt;
 		for(int j = 0 ; j &amp;amp;lt; inputData[i].n; j++)&lt;br /&gt;
 			cin &amp;amp;gt;&amp;amp;gt; inputData[i].weight[j];&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void process()&lt;br /&gt;
 {&lt;br /&gt;
 	for(int i = 0 ; i &amp;amp;lt; numberOfData ; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		sort(&amp;amp;amp;inputData[i].weight[0],&amp;amp;amp;inputData[i].weight[inputData[i].n],greater&amp;amp;lt;int&amp;amp;gt;());&lt;br /&gt;
 		int team1 = inputData[i].weight[0], team2 = inputData[i].weight[1];&lt;br /&gt;
 		for(int j=2;j &amp;amp;lt; inputData[i].n;j++)&lt;br /&gt;
 		{&lt;br /&gt;
 			if(team1 &amp;amp;lt; team2)&lt;br /&gt;
 				team1 += inputData[i].weight[j];&lt;br /&gt;
 			else&lt;br /&gt;
 				team2 += inputData[i].weight[j];&lt;br /&gt;
 		}&lt;br /&gt;
 		if(abs(team1 - team2) &amp;amp;lt;= inputData[i].x)&lt;br /&gt;
 			outputData[i] = true;&lt;br /&gt;
 		else&lt;br /&gt;
 			outputData[i] = false;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void output()&lt;br /&gt;
 {&lt;br /&gt;
 	for(int i = 0 ; i &amp;amp;lt; numberOfData ; i++)&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; outputData[i] &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 	input();&lt;br /&gt;
 	process();&lt;br /&gt;
 	output();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 인수 =&lt;br /&gt;
* 알고리즘이 왜 빨리빨리 안 떠오르는 걸까&lt;br /&gt;
* 요것도 1시간 넘게 걸렸다--; 선호랑 연습을 해야 하는걸까&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;vector&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;algorithm&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;numeric&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 bool IsDividable(vector&amp;amp;lt;int&amp;amp;gt;&amp;amp;amp; weights, int diff);&lt;br /&gt;
 int GetMax(vector&amp;amp;lt;int&amp;amp;gt;&amp;amp;amp; weights, int diff);&lt;br /&gt;
 int GetMin(vector&amp;amp;lt;int&amp;amp;gt;&amp;amp;amp; weights, int diff);&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	int weight, diff, num;&lt;br /&gt;
 	vector&amp;amp;lt;int&amp;amp;gt; weights;&lt;br /&gt;
 &lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; num;&lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; diff;&lt;br /&gt;
 &lt;br /&gt;
 	for(int i = 0 ; i &amp;amp;lt; num ; ++i)&lt;br /&gt;
 	{&lt;br /&gt;
 		cin &amp;amp;gt;&amp;amp;gt; weight;	&lt;br /&gt;
 		weights.push_back(weight);	&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	if(IsDividable(weights, diff))&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;Yes&amp;quot;;&lt;br /&gt;
 	else&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;No&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool IsDividable(vector&amp;amp;lt;int&amp;amp;gt;&amp;amp;amp; weights, int diff)&lt;br /&gt;
 {&lt;br /&gt;
 	sort(weights.begin(), weights.end());&lt;br /&gt;
 	int partTotal = 0;&lt;br /&gt;
 	for(int i = 0 ; i &amp;amp;lt; weights.size() ; ++i)&lt;br /&gt;
 	{&lt;br /&gt;
 		partTotal = weights[i];&lt;br /&gt;
 		for(int j = i + 1 ; j &amp;amp;lt; weights.size() ; ++j)&lt;br /&gt;
 		{&lt;br /&gt;
 			if(i != j)&lt;br /&gt;
 			{&lt;br /&gt;
 				partTotal += weights[j];&lt;br /&gt;
 				if(partTotal &amp;amp;lt; GetMin(weights, diff))&lt;br /&gt;
 					continue;&lt;br /&gt;
 				else if(partTotal &amp;amp;gt;= GetMin(weights, diff) &amp;amp;amp;&amp;amp;amp; partTotal &amp;amp;lt;= GetMax(weights, diff))&lt;br /&gt;
 					return true;&lt;br /&gt;
 				else&lt;br /&gt;
 				{&lt;br /&gt;
 					partTotal -= (weights[j] + weights[j-1]);&lt;br /&gt;
 					continue;&lt;br /&gt;
 				}&lt;br /&gt;
 				partTotal = 0;&lt;br /&gt;
 			}&lt;br /&gt;
 		}			&lt;br /&gt;
 	}&lt;br /&gt;
 	return false;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int GetMax(vector&amp;amp;lt;int&amp;amp;gt;&amp;amp;amp; weights, int diff)&lt;br /&gt;
 {&lt;br /&gt;
 	float total = accumulate(weights.begin(), weights.end(), 0) / 2;&lt;br /&gt;
 	return (total + diff/2);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int GetMin(vector&amp;amp;lt;int&amp;amp;gt;&amp;amp;amp; weights, int diff)&lt;br /&gt;
 {&lt;br /&gt;
 	float total = accumulate(weights.begin(), weights.end(), 0) / 2;&lt;br /&gt;
 	return (total - diff/2);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[2002년도ACM문제샘플풀이]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>