<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>難易度-1500 - IQパズルステップ</title>
	<atom:link href="https://chokomon.com/tag/difficulty-1500/feed/" rel="self" type="application/rss+xml" />
	<link>https://chokomon.com</link>
	<description>ちょこっと頭を良くするIQパズル問題集</description>
	<lastBuildDate>Tue, 18 Oct 2022 10:45:55 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://chokomon.com/wp-content/uploads/2022/02/cropped-icon512-32x32.png</url>
	<title>難易度-1500 - IQパズルステップ</title>
	<link>https://chokomon.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【クラス・構造体メニュー】デフォルト引数 (paizaランク B)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-02-05-00672/</link>
					<comments>https://chokomon.com/26-class_primer-02-05-00672/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Tue, 18 Oct 2022 10:45:53 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクB]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=7026</guid>

					<description><![CDATA[【クラス・構造体メニュー】> 【静的メンバ】STEP: 5 デフォルト引数 (paizaランク B 相当) [難易度: 1590 ±19] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】> <a href="https://paiza.jp/works/mondai/class_primer/class_primer__set_default" target="_blank" rel="noreferrer noopener">【静的メンバ】STEP: 5 デフォルト引数 (paizaランク B 相当)</a> [難易度: <strong>1590 ±19</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img fetchpriority="high" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/10/26-02-05-01.png" alt="" class="wp-image-7027"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>居酒屋で働きながらクラスの勉強をしていたあなたは、お客さんをクラスに見立てることで店内の情報を管理できることに気付きました。<br>全てのお客さんは、ソフトドリンクと食事を頼むことができます。加えて 20 歳以上のお客さんはお酒を頼むことができます。<br>20 歳未満のお客さんがお酒を頼もうとした場合はその注文は取り消されます。<br>また、お酒（ビールを含む）を頼んだ場合、以降の全ての食事の注文 が毎回 200 円引きになります。</p>



<p>今回、この居酒屋でビールフェスをやることになり、ビールの注文が相次いだため、いちいちビールの値段である 500 円を書くのをやめ、伝票に注文の種類と値段を書く代わりに 0 とだけを書くことになりました。</p>



<p>店内の全てのお客さんの数と注文の回数、各注文をしたお客さんの番号とその内容が与えられるので、各お客さんの会計を求めてください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>3 5<br>19<br>43<br>22<br>2 0<br>2 food 4333<br>1 0<br>2 0<br>1 food 4606</p>



<p><strong>出力値（例）</strong><br>4606<br>5133<br>0</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    class Customer {
        public $payment = 0;
        
        public function __construct($payment) {
            $this-&gt;payment = $payment = 0;
        }
    
        public function GetPayment() {
            return $this-&gt;payment;
        }
    
        public function OrderFood($price) {
            $this-&gt;payment += $price;
        }
    
        public function OrderSoftDrink($price) {
            $this-&gt;payment += $price;
        }
    
        public function OrderAlcohol($price = 500) {
            // echo "お酒は20歳になってから";
        }
    }
    
    class AdultCustomer extends Customer {
        public $discount;
        
        public function __construct($discount) {
            $this-&gt;discount = $discount = false;
        }
    
        public function OrderFood($price) {
            $this-&gt;payment += $this-&gt;discount ? $price - 200 : $price;
        }
    
        public function OrderAlcohol($price = 500) {
            $this-&gt;payment += $price;
            if (!$this-&gt;discount) {
                $this-&gt;discount = true;
            }
        }
    }
    
    list($n, $k) = explode(" ", trim(fgets(STDIN)));
    for($i=0; $i&lt;$n; $i++) {
        $age = trim(fgets(STDIN));
        
        if($age&lt;20) {
            $customers[] = new Customer($age);
        } else {
            $customers[] = new AdultCustomer($age);
        }
    }
    for($i=0; $i&lt;$k; $i++) {
        $m = explode(" ", trim(fgets(STDIN)));
        
        $index = $m[0];
        $index--;
        
        if($m[1] == 0) {
            $order = "beer";
        } else {
            $order = $m[1];
            $price = $m[2];
        }
    
        switch($order) {
            case "food":
                $customers[$index]-&gt;OrderFood($price);
                break;
            case "softdrink":
                $customers[$index]-&gt;OrderSoftDrink($price);
                break;
            case "alcohol":
                $customers[$index]-&gt;OrderAlcohol($price);
                break;
            case "beer":
                $customers[$index]-&gt;OrderAlcohol();
                break;
        }
    }
    //print_r($customers);
    
    for($i=0; $i&lt;$n; $i++) {
        echo $customers[$i]-&gt;GetPayment(). "\n";
    }
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="660" height="200" src="https://chokomon.com/wp-content/uploads/2022/10/26-02-05-02.png" alt="" class="wp-image-7028"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-02-05-00672/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【paizaの森練習問題コンテスト6】ロボットの移動 (paizaランク D)-解答例-PHP編</title>
		<link>https://chokomon.com/42-forest_contest-06-03-00668/</link>
					<comments>https://chokomon.com/42-forest_contest-06-03-00668/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Thu, 13 Oct 2022 06:23:19 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[練習問題コンテスト]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクD]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=7002</guid>

					<description><![CDATA[【paizaの森練習問題コンテスト6】過去問題6 > ロボットの移動 (paizaランク D 相当) [難易度: 1594 ±45] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/paiza_set/42-forest_contest/">paizaの森練習問題コンテスト6</a>】<a href="https://paiza.jp/works/mondai/forest_contest_006/forest_contest_006__d_robot_movement" target="_blank" rel="noreferrer noopener">過去問題6 > ロボットの移動 (paizaランク D 相当)</a> [難易度: <strong>1594 ±45</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/10/42-06-03-01.png" alt="" class="wp-image-7003"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>2 次元グリッドにおいて、ロボットは(0,0)の初期位置から目標地点(x,y)まで移動したいです。ロボットは 1 ステップにつき、以下の 5 種類の動きを取ることができます。</p>



<p>・(i,j) → (i,j + 1)<br>・(i,j) → (i + 1,j)<br>・(i,j) → (i,j - 1)<br>・(i,j) → (i - 1,j)<br>・(i,j)の位置で静止</p>



<p>ロボットが初期位置から目標地点に到達するには最小で何ステップ必要か求めてください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>5 3</p>



<p><strong>出力値（例）</strong><br>8</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    list($x, $y) = explode(" ", trim(fgets(STDIN)));
    
    echo abs($x)+abs($y);
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="160" src="https://chokomon.com/wp-content/uploads/2022/10/42-06-03-02.png" alt="" class="wp-image-7004"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/42-forest_contest-06-03-00668/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クラス・構造体メニュー】クラスのメンバの更新 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-02-03-00664/</link>
					<comments>https://chokomon.com/26-class_primer-02-03-00664/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Fri, 30 Sep 2022 14:06:53 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6975</guid>

					<description><![CDATA[【クラス・構造体メニュー】> 【静的メンバ】STEP: 3 クラスのメンバの更新 (paizaランク C 相当) [難易度: 1524 ±18] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】> <a href="https://paiza.jp/works/mondai/class_primer/class_primer__change_member" target="_blank" rel="noreferrer noopener">【静的メンバ】STEP: 3 クラスのメンバの更新 (paizaランク C 相当)</a> [難易度: <strong>1524 ±18</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/26-02-03-01.png" alt="" class="wp-image-6976"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>エンジニアであり、社員を管理を管理する立場にあるあなたの会社には、効率的に社員を管理するために、次のようなメンバ変数とメンバ関数を持つ社員クラス<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"> <code>class employee</code> </mark>が存在しています。<br><br>メンバ変数<br><code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">整数 number, 文字列 name</mark></code><br><br>メンバ関数</p>



<p class="has-gray-background-color has-background">getnum(){<br>    return number;<br>}<br>getname(){<br>    return name;<br>}</p>



<p>しかし、この社員クラスについて、社員番号や名前が変わった際にいちいち手動で更新するのは面倒だと感じたあなたは、引数に元の社員番号と新しい社員番号を指定すれば、新しい社員番号に更新してくれる関数<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"> <code>change_num</code> </mark>と　引数に元の名前と新しい名前を指定すれば、新しい名前に更新してくれる関数 <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"><code>change_name</code> </mark>を作成することにしました。</p>



<p>入力で<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"> <code>make number name</code> </mark>と入力された場合は変数に<code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">number, name</mark></code>を持つ社員を作成し、<code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">getnum n</mark></code>と入力された場合は n 番目に作成された社員の number を、<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"><code>getname n</code> </mark>と入力された場合は n 番目に作成された社員の name を出力してください。</p>



<p>また、<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"> <code>change_num n newnum</code> </mark>と入力された場合は、n 番目に作成された社員の number を、 newnum に変更し、<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"> <code>change_name n newname</code> </mark>と入力された場合は、n 番目に作成された社員の name を、 newname に変更してください。</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    //Classを定義
    class employee {
        //プロパティを定義
        private $number;
        private $name;
        
        //インスタンス化するときに引数を受け取れるようにする
        public function __construct($number, $name) {
            $this-&gt;number = $number;
            $this-&gt;name = $name;
        }
        //数字を取得するメソッドを追加
        public function getnum() {
            return $this-&gt;number;
        }
        public function getname() {
            return $this-&gt;name;
        }
        public function change_num($newnum) {
            $this-&gt;number = $newnum;
        }
        public function change_name($newname) {
            $this-&gt;name = $newname;
        }
    }
    
    $n = trim(fgets(STDIN));
    for($i=0; $i&lt;$n; $i++) {
        $s = explode(" ", trim(fgets(STDIN)));
        
        $commond = $s[0];
        $num = $s[1];
        
        switch($commond) {
            case "make" :
                $name = $s[2];
                $employee[] = new employee($num, $name);
                break;
            case "getnum" :
                echo ($employee[$num-1]-&gt;getnum()). "\n";
                break;
            case "getname" :
                echo ($employee[$num-1]-&gt;getname()). "\n";
                break;
            case "change_num" :
                $newnum = $s[2];
                echo ($employee[$num-1]-&gt;change_num($newnum));
                break;
            case "change_name" :
                $newname = $s[2];
                echo ($employee[$num-1]-&gt;change_name($newname));
                break;
        }
    }
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="200" src="https://chokomon.com/wp-content/uploads/2022/09/26-02-03-02.png" alt="" class="wp-image-6979"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-02-03-00664/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【スキルチェック過去問題セット】神経衰弱 (paizaランク B)-解答例-PHP編</title>
		<link>https://chokomon.com/32-skillcheck_archive-01-07-00660/</link>
					<comments>https://chokomon.com/32-skillcheck_archive-01-07-00660/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Sat, 24 Sep 2022 12:57:15 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[スキルチェック過去問題セット]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクB]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6948</guid>

					<description><![CDATA[【スキルチェック過去問題セット】> 神経衰弱 (paizaランク B 相当) [難易度: 1588 ±12] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/paiza_set/32-skillcheck_archive/">スキルチェック過去問題セット</a>】> <a href="https://paiza.jp/works/mondai/skillcheck_archive/concentration" target="_blank" rel="noreferrer noopener">神経衰弱 (paizaランク B 相当)</a> [難易度: <strong>1588 ±12</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/32-01-07-01.png" alt="" class="wp-image-6949"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>神経衰弱と呼ばれるトランプゲームのシミュレーションをしましょう。<br>今回は数字が書かれたトランプのみを考え、ジョーカーは考えません。</p>



<p>まず、トランプを縦 H 枚、横 W 枚の長方形の形に並べた状態でスタートします。<br>H × W 枚のトランプには 1 〜 13 の数字のうちどれか1つが書かれています。<br>また、同じ数字が書かれたトランプが複数あります。</p>



<p>プレイヤーが N 人おり、それぞれ 1 〜 N で番号付けられています。<br>ゲームが始まると、1番の人から、このような手順でプレイしていきます。</p>



<p>・並べられたトランプから2枚のトランプを選び、めくります。<br>・めくった2枚のトランプに異なる数字が書かれていれば、次のプレイヤーの手番となります。同じ数字であれば、次の操作をおこないます。<br>・まず、2枚のトランプはめくったプレーヤーのものとなり、取り除かれます。<br>・トランプがすべて取り除かれた場合、ゲームは終了となります。<br>・トランプが残っている場合、同じプレーヤーがまた最初の手順に戻り、トランプをめくります。</p>



<p>ここで、N 番のプレイヤーの次のプレイヤーは 1 番のプレイヤーであるとします。</p>



<p>ゲームの初期状態におけるトランプの配置と、ゲームが終わるまでに捲られたトランプに関する時系列順の記録が与えられます。<br>その記録を用いて、各プレイヤーが取り除いたトランプの枚数を求めてください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>2 3 2<br>1 2 3<br>2 1 3<br>5<br>1 1 2 1<br>1 1 1 2<br>1 1 2 2<br>1 3 2 3<br>1 2 2 1</p>



<p><strong>出力値（例）</strong><br>6<br>0</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    list($h, $w, $n) = explode(" ", trim(fgets(STDIN)));
    for($i=0; $i&lt;$h; $i++) {
        $t[] = explode(" ", trim(fgets(STDIN)));
    }
    
    $l = trim(fgets(STDIN));
    
    $player_card = array_fill(0, $n, 0);
    $player = 0;
    
    for($i=0; $i&lt;$l; $i++) {
        list($a, $b, $A, $B) = explode(" ", trim(fgets(STDIN)));
        
        $a -= 1; $b -= 1; $A -= 1; $B -= 1;
        
        // 同じカードを引いたかどうか
        if($t[$a][$b] == $t[$A][$B]) {
            $player_card[$player] += 2;
        }
        // 同じカードを引かなかった場合は、次のプレイヤーの番になる
        else {
            $player ++;
            $player %= $n;
        }
    }
    for($i=0; $i&lt;$n; $i++) {
        echo $player_card[$i]. "\n";
    }
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="200" src="https://chokomon.com/wp-content/uploads/2022/09/32-01-07-02.png" alt="" class="wp-image-6950"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/32-skillcheck_archive-01-07-00660/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クラス・構造体メニュー】構造体の更新 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-01-04-00659/</link>
					<comments>https://chokomon.com/26-class_primer-01-04-00659/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Fri, 23 Sep 2022 08:47:08 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6941</guid>

					<description><![CDATA[【クラス・構造体メニュー】> FINAL問題【構造体の更新】構造体の更新 (paizaランク C 相当) [難易度: 1550 ±13] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】> <a href="https://paiza.jp/works/mondai/class_primer/class_primer__change" target="_blank" rel="noreferrer noopener">FINAL問題【構造体の更新】構造体の更新 (paizaランク C 相当)</a> [難易度: <strong>1550 ±13</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/26-01-04-01.png" alt="" class="wp-image-6942"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>クラスの学級委員である paiza 君は、クラスのみんなに次のような形式でアカウントの情報を送ってもらうよう依頼しました。</p>



<p class="has-gray-background-color has-background">名前 年齢 誕生日 出身地</p>



<p>送ってもらったデータを使いやすいように整理したいと思った paiza 君はクラス全員分のデータを次の形式でまとめることにしました。</p>



<p class="has-gray-background-color has-background">User{<br>    nickname : 名前<br>    old : 年齢<br>    birth : 誕生日<br>    state : 出身地<br>}</p>



<p>途中で名前が変わった際にいちいちデータを修正するのが面倒だと思ったあなたは、生徒の構造体と新しい名前を受け取り、その名前を修正する関数&nbsp;<code>changeName</code>&nbsp;を作成し、それを用いて生徒の名前を更新することにしました。</p>



<p>クラスの人数と全員の情報、更新についての情報が与えられるので、入力に従って名前を更新した後のクラスのメンバーの情報を出力してください。</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    // Studentというクラス(型)を宣言。クラスの1文字目は大文字
    class Student {
     
      // プロパティ
      public $name;
      public $old;
      public $birth;
      public $state;
      //  メソッド
      function showData(){
        
      }
    }
    //クラスStudentのインスタンスを作成
    $deta = new Student;
    
    list($n, $k) = explode(" ", trim(fgets(STDIN)))
    ;
    for($i=0; $i&lt;$n; $i++) {
        list($name, $old, $birth, $state) = explode(" ", trim(fgets(STDIN)));
        
        $student[] = array("name"=&gt;$name,
            "old"=&gt;$old, "birth"=&gt;$birth, "state"=&gt;$state);
    }
    
    for($i=0; $i&lt;$k; $i++) {
        list($num, $change_name) = explode(" ", trim(fgets(STDIN)));
        $student[$num-1]["name"] = $change_name;
    }
    
    //print_r($student);
    
    for($i=0; $i&lt;$n; $i++) {
        printf("%s %d %s %s\n", 
        $student[$i]["name"], $student[$i]["old"],
        $student[$i]["birth"], $student[$i]["state"]);
    }   
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="160" src="https://chokomon.com/wp-content/uploads/2022/09/26-01-04-02.png" alt="" class="wp-image-6943"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-01-04-00659/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クラス・構造体メニュー】構造体の作成 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-01-01-00656/</link>
					<comments>https://chokomon.com/26-class_primer-01-01-00656/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Mon, 19 Sep 2022 22:59:21 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6922</guid>

					<description><![CDATA[【クラス・構造体メニュー】> 【構造体の更新】STEP: 1 構造体の作成 (paizaランク C 相当) [難易度: 1508 ±12] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】> <a href="https://paiza.jp/works/mondai/class_primer/class_primer__make" target="_blank" rel="noreferrer noopener">【構造体の更新】STEP: 1 構造体の作成 (paizaランク C 相当)</a> [難易度: <strong>1508 ±12</strong>]



<p>※リンク先へ移動するためには[<a rel="noreferrer noopener" href="https://paiza.jp/works" target="_blank">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/26-01-01-01.png" alt="" class="wp-image-6923"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>クラスの学級委員である paiza 君は、クラスのみんなに次のような形式でアカウントの情報を送ってもらうよう依頼しました。</p>



<p class="has-gray-background-color has-background">名前 年齢 誕生日 出身地</p>



<p>送ってもらったデータを使いやすいように整理したいと思った paiza 君はクラス全員分のデータを次の形式でまとめることにしました。</p>



<p class="has-gray-background-color has-background">User{<br>nickname : 名前<br>old : 年齢<br>birth : 誕生日<br>state : 出身地<br>}</p>



<p></p>



<p>クラスメートの情報が与えられるので、それらを以上の形式でまとめたものを出力してください。</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    // User{
    // nickname : koko
    // old : 23
    // birth : 04/10
    // state : tokyo
    // }
    
    $n = trim(fgets(STDIN));
    for($i=0; $i&lt;$n; $i++){
        list($name, $old, $birth, $state) = explode(" ", trim(fgets(STDIN)));
        
        echo "User{\n";
        printf("nickname : %s\n", $name);
        printf("old : %d\n", $old);
        printf("birth : %s\n", $birth);
        printf("state : %s\n", $state);
        echo "}\n";
    }
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="280" src="https://chokomon.com/wp-content/uploads/2022/09/26-01-01-02.png" alt="" class="wp-image-6924"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-01-01-00656/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【累積和メニュー】2 次元上のいもす法 2 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/27-prefix_sum_problems-07-02-00642/</link>
					<comments>https://chokomon.com/27-prefix_sum_problems-07-02-00642/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Thu, 15 Sep 2022 03:15:56 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[累積和メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6843</guid>

					<description><![CDATA[【累積和メニュー】> 【2 次元上のいもす法】STEP: 2 2 次元上のいもす法 2 (paizaランク C 相当) [難易度: 1566 ±45] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/27-prefix_sum_problems/">累積和メニュー</a>】> <a href="https://paiza.jp/works/mondai/prefix_sum_problems/prefix_sum_problems__2d_imos_step2" target="_blank" rel="noreferrer noopener">【2 次元上のいもす法】STEP: 2 2 次元上のいもす法 2 (paizaランク C 相当)</a> [難易度: <strong>1566 ±45</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/27-07-02-01.png" alt="" class="wp-image-6844"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>1 行目に a_i, b_i (1 ≦ i ≦ 5) が 5 行で与えられます。</p>



<p>5 行 5 列のマスがあり、最初、マスには全て 0 が書かれています。</p>



<p>5 つの長方形領域の左上の座標 (a_i, 3) と右下の座標 (b_i, 3) が与えられます。それぞれの範囲に対して、その範囲に含まれるマスに 1 を加算していきます。</p>



<p>5 行 5 列のマスに書かれた値のうち、最大の値をいもす法を用いて求めてください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>1 3<br>2 4<br>3 5<br>1 3<br>3 5</p>



<p><strong>出力値（例）</strong><br>5</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    for ($i=0; $i&lt;5; $i++) {
        list($a, $b) = explode(" ", trim(fgets(STDIN)));
        $x1[] = $a;
        $x2[] = $b;
    }
    
    $sRow = array_fill(0, 6, 0);
    $s = array_fill(0, 6, $sRow);
    
    //$x1 = [1,2,3,1,3];
    $y1 = [3,3,3,3,3];
    //$x2 = [3,4,5,3,5];
    $y2 = [3,3,3,3,3];
    
    for ($i=0; $i&lt;5; $i++) {
        $s[$y1[$i]-1][$x1[$i]-1]++;
        $s[$y2[$i]][$x2[$i]]++;
        $s[$y1[$i]-1][$x2[$i]]--;
        $s[$y2[$i]][$x1[$i]-1]--;
    }
    
    // 横方向への累積和
    for ($i=0; $i&lt;6; $i++) {
        for ($j=1; $j&lt;6; $j++) {
            $s[$i][$j] += $s[$i][$j-1];
        }
    }
    
    // 縦方向の累積和
    for ($i=1; $i&lt;6; $i++) {
        for ($j=0; $j&lt;6; $j++) {
            $s[$i][$j] += $s[$i-1][$j];
        }
    }
    //print_r($s);
    
    // 最大値を調べる
    $tile_max = 0;
    for ($i=0; $i&lt;6; $i++) {
        for ($j=0; $j&lt;6; $j++) {
            if ($tile_max &lt; $s[$i][$j]) {
                $tile_max = $s[$i][$j];
            }
        }
    }
    echo $tile_max;
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="160" src="https://chokomon.com/wp-content/uploads/2022/09/27-07-02-02.png" alt="" class="wp-image-6845"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/27-prefix_sum_problems-07-02-00642/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【累積和メニュー】2 次元上のいもす法 1 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/27-prefix_sum_problems-07-01-00641/</link>
					<comments>https://chokomon.com/27-prefix_sum_problems-07-01-00641/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Wed, 14 Sep 2022 14:28:21 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[累積和メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6838</guid>

					<description><![CDATA[【累積和メニュー】> 【2 次元上のいもす法】STEP: 1 2 次元上のいもす法 1 (paizaランク C 相当) [難易度: 1545 ±44] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/27-prefix_sum_problems/">累積和メニュー</a>】> <a href="https://paiza.jp/works/mondai/prefix_sum_problems/prefix_sum_problems__2d_imos_step1" target="_blank" rel="noreferrer noopener">【2 次元上のいもす法】STEP: 1 2 次元上のいもす法 1 (paizaランク C 相当)</a> [難易度: <strong>1545 ±44</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/27-07-01-01.png" alt="" class="wp-image-6839"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>5 行 5 列のマスがあり、最初、マスには全て 0 が書かれています。<br><br>x 座標を列、y 座標を行とします。以下に</p>



<p class="has-gray-background-color has-background">(左上の x 座標, 左上の y 座標) (右下の x 座標, 右下の y 座標)<br>(1 ≦ x ≦ 5, 1 ≦ y ≦ 5)</p>



<p></p>



<p>という形で、マスに沿った長方形の 5 つの範囲が与えられます。それぞれの範囲に対して、その範囲に含まれるマスに 1 を加算していきます。</p>



<p>5 行 5 列のマスに書かれた値のうち、最大の値をいもす法を用いて求めてください。</p>



<p class="has-gray-background-color has-background">(1, 1) (3, 3)<br>(2, 2) (4, 4)<br>(3, 3) (5, 5)<br>(1, 3) (3, 5)<br>(3, 1) (5, 3)</p>



<p></p>



<p><strong>入力値（例）</strong><br>なし</p>



<p><strong>出力値（例）</strong><br>5 行 5 列のマスに書かれた値のうち、最大の値をいもす法を用いて求めてください。</p>



<p>末尾に改行を入れ、余計な文字、空行を含んではいけません。</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    $sRow = array_fill(0, 6, 0);
    $s = array_fill(0, 6, $sRow);
    
    $x1 = [1,2,3,1,3];
    $y1 = [1,2,3,3,1];
    $x2 = [3,4,5,3,5];
    $y2 = [3,4,5,5,3];
    
    for ($i=0; $i&lt;5; $i++) {
        $s[$y1[$i]-1][$x1[$i]-1]++;
        $s[$y2[$i]][$x2[$i]]++;
        $s[$y1[$i]-1][$x2[$i]]--;
        $s[$y2[$i]][$x1[$i]-1]--;
    }
    
    // 横方向への累積和
    for ($i=0; $i&lt;6; $i++) {
        for ($j=1; $j&lt;6; $j++) {
            $s[$i][$j] += $s[$i][$j-1];
        }
    }
    
    // 縦方向の累積和
    for ($i=1; $i&lt;6; $i++) {
        for ($j=0; $j&lt;6; $j++) {
            $s[$i][$j] += $s[$i-1][$j];
        }
    }
    //print_r($s);
    
    // 最大値を調べる
    $tile_max = 0;
    for ($i=0; $i&lt;6; $i++) {
        for ($j=0; $j&lt;6; $j++) {
            if ($tile_max &lt; $s[$i][$j]) {
                $tile_max = $s[$i][$j];
            }
        }
    }
    echo $tile_max;
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="160" src="https://chokomon.com/wp-content/uploads/2022/09/27-07-01-02.png" alt="" class="wp-image-6840"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/27-prefix_sum_problems-07-01-00641/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【累積和メニュー】区間内の個数 (文字列) 3 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/27-prefix_sum_problems-04-03-00628/</link>
					<comments>https://chokomon.com/27-prefix_sum_problems-04-03-00628/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Sat, 10 Sep 2022 18:44:01 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[累積和メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6756</guid>

					<description><![CDATA[【累積和メニュー】> 【区間内の個数 (文字列)】STEP: 3 区間内の個数 (文字列) 3 (paizaランク C 相当) [難易度: 1563 ±33] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/27-prefix_sum_problems/">累積和メニュー</a>】> <a href="https://paiza.jp/works/mondai/prefix_sum_problems/prefix_sum_problems__string_count_step3" target="_blank" rel="noreferrer noopener">【区間内の個数 (文字列)】STEP: 3 区間内の個数 (文字列) 3 (paizaランク C 相当)</a> [難易度: <strong>1563 ±33</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/27-04-03-01.png" alt="" class="wp-image-6758"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>1 行目に整数 X, Y が与えられます。</p>



<p>2 行目に <code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">'b'</mark></code> と <code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">'w'</mark></code> で構成された文字列 str が与えられます。</p>



<p>文字列 str の X 文字目から Y 文字目までの <code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">'b'</mark></code> の個数を累積和を用いて求めてください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>3 8<br>bwwbwbbwbw</p>



<p><strong>出力値（例）</strong><br>3</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    list($x, $y) = explode(" ", trim(fgets(STDIN)));
    $str = trim(fgets(STDIN));
    
    //$len = mb_strlen($str);
    
    for ($i=0; $i&lt;10; $i++) {
        ($str[$i] == "b") ? $b[] = 1 : $b[] = 0;
    }
    $s[0] = 0;
    for ($i=0; $i&lt;10; $i++) {
        $s[$i+1] = $s[$i]+$b[$i];
    }
    //print_r($s);
    echo $s[$y]-$s[$x-1];
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="160" src="https://chokomon.com/wp-content/uploads/2022/09/27-04-03-02.png" alt="" class="wp-image-6759"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/27-prefix_sum_problems-04-03-00628/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クエリメニュー】平方分割のバケット (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/17-query_primer-03-05-00606/</link>
					<comments>https://chokomon.com/17-query_primer-03-05-00606/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Wed, 31 Aug 2022 19:43:13 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クエリメニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6613</guid>

					<description><![CDATA[【クエリメニュー】> 【平方分割】STEP: 5 平方分割のバケット (paizaランク C 相当) [難易度: 1543 ±31] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/17-query_primer/">クエリメニュー</a>】> <a href="https://paiza.jp/works/mondai/query_primer/query_primer__square_division_bucket" target="_blank" rel="noreferrer noopener">【平方分割】STEP: 5 平方分割のバケット (paizaランク C 相当)</a> [難易度: <strong>1543 ±31</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/17-03-05-01.png" alt="" class="wp-image-6614"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>paiza くんは、長さ N の数列のある区間に含まれる要素の最大値を K 回求めたいのですが、与えられる区間の要素をいちいち全て調べていては時間計算量にして最大で O(NK) かかってしまいます。<br>そこで、paiza くんは 平方分割 と言われるアルゴリズムを用いることで、この計算量を減らそうと考えました。<br>平方分割とは、次のようなアルゴリズムです。</p>



<p>1. 長さ N の配列が与えられたとき、N の平方根 x を求め、配列を長さ x の配列に分割し、それぞれの配列について目的の値を調べておく。<br>（分割で得られる最後の配列の長さは必ずしも x になるとは限りません）<br>2. 調べたい区間に完全に含まれている配列についての 1. で求めた値と、その配列以外の部分の値を全て調べて、目的の値を求める。</p>





<p>この問題では、長さ 10,000 の数列 A について手順 1. を行ってみましょう。<br>10,000 の平方根は 100 なので、先頭から 100 要素ずつの最大値を求めましょう。</p>



<p></p>



<p>入力値（例）<br>74769<br>-62958<br>6542<br>-93191<br>-6767<br>-5945<br>65384<br>-97133<br>85447<br>-80479<br>...</p>



<p>出力値（例）<br>99070<br>99686<br>97400<br>98349<br>98202<br>95846<br>97976<br>98004<br>96188<br>96561<br>...</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    for ($i=0; $i&lt;10000; $i++) {
        $a[] = trim(fgets(STDIN));
    }
    
    for ($i=0; $i&lt;100; $i++) {
        for ($j=0; $j&lt;100; $j++) {
            if ($j==0) {
                $ans[$i] = $a[$i *100];
            } else {
                $ans[$i] = max($ans[$i], $a[$i*100+$j]);
            }
        }
    }
    
    for ($i=0; $i&lt;100; $i++) {
        printf("%d\n", $ans[$i]);
    }
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="800" src="https://chokomon.com/wp-content/uploads/2022/09/17-03-05-02.png" alt="" class="wp-image-6615"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/17-query_primer-03-05-00606/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
