<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ta.in.th/index.php?action=history&amp;feed=atom&amp;title=Segment_Tree</id>
	<title>Segment Tree - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ta.in.th/index.php?action=history&amp;feed=atom&amp;title=Segment_Tree"/>
	<link rel="alternate" type="text/html" href="https://wiki.ta.in.th/index.php?title=Segment_Tree&amp;action=history"/>
	<updated>2026-06-16T22:58:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0-alpha</generator>
	<entry>
		<id>https://wiki.ta.in.th/index.php?title=Segment_Tree&amp;diff=33&amp;oldid=prev</id>
		<title>Tata: Created page with &quot;* เอามาจาก wiki.acioi.in.th &lt;syntaxhighlight lang=&quot;c++&quot; line='line'&gt;  #include&lt;stdio.h&gt;  #define INF 1000000001  int arr[1005],st[2005],n;	//st = segment tree...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.ta.in.th/index.php?title=Segment_Tree&amp;diff=33&amp;oldid=prev"/>
		<updated>2019-03-06T17:24:14Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;* เอามาจาก wiki.acioi.in.th &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;  #include&amp;lt;stdio.h&amp;gt;  #define INF 1000000001  int arr[1005],st[2005],n;	//st = segment tree...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* เอามาจาก wiki.acioi.in.th&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; line='line'&amp;gt; &lt;br /&gt;
#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #define INF 1000000001&lt;br /&gt;
 int arr[1005],st[2005],n;	//st = segment tree&lt;br /&gt;
 void build(int s,int t,int x,int *A)&lt;br /&gt;
 {&lt;br /&gt;
 	if(s==t)&lt;br /&gt;
 	{&lt;br /&gt;
 		st[x]=A[s];&lt;br /&gt;
 		return;&lt;br /&gt;
 	}&lt;br /&gt;
 	int mid =(s+t)/2;&lt;br /&gt;
 	build(s,mid,2*x,A);&lt;br /&gt;
 	build(mid+1,t,2*x+1,A);&lt;br /&gt;
 	//sum&lt;br /&gt;
 	st[x]=st[2*x]+st[2*x+1];&lt;br /&gt;
 	/*min&lt;br /&gt;
 	if(st[2*x]&amp;lt;st[2*x+1])	st[x]=st[2*x];&lt;br /&gt;
 	else	st[x]=st[2*x+1];&lt;br /&gt;
 	*/&lt;br /&gt;
 	/*max&lt;br /&gt;
 	if(st[2*x]&amp;gt;st[2*x+1])	st[x]=st[2*x];&lt;br /&gt;
 	else	st[x]=st[2*x+1];&lt;br /&gt;
 	*/&lt;br /&gt;
 }void build(int *A)	{	build(1,n,1,A);	}&lt;br /&gt;
 &lt;br /&gt;
 void update(int s,int t,int x,int idx,int val)&lt;br /&gt;
 {&lt;br /&gt;
 	if(s==t)&lt;br /&gt;
 	{&lt;br /&gt;
 		st[x]=val;&lt;br /&gt;
 		return;&lt;br /&gt;
 	}&lt;br /&gt;
 	int mid=(s+t)/2;&lt;br /&gt;
 	if(idx&amp;lt;=mid)	update(s,mid,2*x,idx,val);&lt;br /&gt;
 	else	update(mid+1,s,2*x+1,idx,val);&lt;br /&gt;
 	//sum&lt;br /&gt;
 	st[x]=st[2*x]+st[2*x+1];&lt;br /&gt;
 	/*min&lt;br /&gt;
 	if(st[2*x]&amp;lt;st[2*x+1])	st[x]=st[2*x];&lt;br /&gt;
 	else	st[x]=st[2*x+1];&lt;br /&gt;
 	*/&lt;br /&gt;
 	/*max&lt;br /&gt;
 	if(st[2*x]&amp;gt;st[2*x+1])	st[x]=st[2*x];&lt;br /&gt;
 	else	st[x]=st[2*x+1];&lt;br /&gt;
 	*/&lt;br /&gt;
 }&lt;br /&gt;
 void update(int idx,int val)	{	arr[idx]=val;	update(1,n,1,idx,val);	}&lt;br /&gt;
 &lt;br /&gt;
 int find(int s,int t,int x,int i,int j)&lt;br /&gt;
 {&lt;br /&gt;
 	if(t&amp;lt;i || s&amp;gt;j)	return -INF;	//non intersect&lt;br /&gt;
 	if(s&amp;gt;=i &amp;amp;&amp;amp; t&amp;lt;=j)	return st[x];	// is subset&lt;br /&gt;
 	int mid=(s+t)/2;&lt;br /&gt;
 	int p=find(s,mid,2*x,i,j);&lt;br /&gt;
 	int q=find(mid+1,t,2*x+1,i,j);&lt;br /&gt;
 	if(p==-INF)	return q;&lt;br /&gt;
 	if(q==-INF)	return p;&lt;br /&gt;
 	//sum&lt;br /&gt;
 	return p+q;&lt;br /&gt;
 	/*min&lt;br /&gt;
 	if(p&amp;lt;q)	return p;&lt;br /&gt;
 	else	return q;&lt;br /&gt;
 	*/&lt;br /&gt;
 	/*max&lt;br /&gt;
 	if(p&amp;gt;q)	return p;&lt;br /&gt;
 	else	return q;&lt;br /&gt;
 	*/&lt;br /&gt;
 }&lt;br /&gt;
 int find(int i,int j)	{	return find(1,n,1,i,j);	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tata</name></author>
		
	</entry>
</feed>