AtCoder Beginner Contest 189振り返り

ABC189に参加しました。
時間内にABC3問をACできました。
復習します。

A - Slot

◆問題文
あなたはスロットマシーンで遊んでいます。スロットを回した結果は3文字の英大文字C1,C2,C3で表され、これらが全て同じ文字であるとき当たりです。当たりかどうか判定してください。
◆制約
Ciは英大文字
https://atcoder.jp/contests/abc189/tasks/abc189_a

using System;
using System.Collections.Generic;
using System.Linq;

class Hello
{
    static void Main(string[] args)
    {
        //Cの値を保持する
        //var X_Y = Console.ReadLine().Split().Select(x => int.Parse(x)).ToArray();
        var C = Console.ReadLine();
        //回答用変数
        var ans = "Lost";
        //Cの3文字判定
        if (C[0] == C[1] && C[1] == C[2] && C[2] == C[0])
        {
            ans = "Won";
        }
        Console.WriteLine(ans);
    }
}

B - Alcoholic

◆問題文
高橋君はお酒をN杯飲みました。i番目に飲んだお酒は、量がVi ml、アルコール度数がPi %です。
高橋君はアルコールの摂取量がX mlを超えると酔っ払います。
高橋君が酔っ払ったのは何杯目のお酒を飲んでいるときですか。
ただし、N杯全てのお酒を飲んだあとでも酔っ払っていない場合は、かわりに-1を出力してください。
◆制約
入力は全て整数
1≤N≤10^3
0≤X≤10^6
1≤Vi≤10^3
0≤Pi≤100
https://atcoder.jp/contests/abc189/tasks/abc189_b

using System;
using System.Collections.Generic;
using System.Linq;

class Hello
{
    static void Main(string[] args)
    {
        //N,Xの値を保持する
        var N_X = Console.ReadLine().Split().Select(x => int.Parse(x)).ToArray();
        var N = N_X[0];
        var X = N_X[1];
        //アルコール許容度
        var ans = 0M;
        //N回分ループしアルコールの許容度を超えているかチェックする
        for (var n = 0; n < N; n++)
        {
            var alco = Console.ReadLine().Split().Select(x => Decimal.Parse(x)).ToArray();
            ans += alco[0] * (alco[1] / 100);
            if (X < ans)
            {
                Console.WriteLine(n + 1);
                return;
            }
        }
        Console.WriteLine("-1");
    }
}

C - Mandarin Orange

◆問題文
高橋君の前にN枚の皿が一列に並べられており、左からi番目の皿にはAi個のみかんが置かれています。
高橋君は次の3つの条件を全て満たすような整数の組(l,r,x)を1つ選びます。
1≤l≤r≤N
1≤x
l以上r以下の全ての整数iについて、x≤Ai
その後、高橋君はl番目からr番目まで(両端を含む)の全ての皿からみかんをx個ずつ取って食べます。
整数の組(l,r,x)を適切に選んだとき、高橋君は最大で何個のみかんを食べることができますか。
◆制約
入力は全て整数
1≤N≤10^4
1≤Ai≤10^5
https://atcoder.jp/contests/abc189/tasks/abc189_c

using System;
using System.Collections.Generic;
using System.Linq;

class Hello
{
    static void Main(string[] args)
    {
        //Nの値を保持する
        var N = int.Parse(Console.ReadLine());
        //A1...An
        var As = Console.ReadLine().Split().Select(x => int.Parse(x)).ToArray();
        //As配列の重複を削除し、昇順に並び替える
        var orderAsc = As.Distinct().OrderBy(x => x).ToArray();
        var tmpMax = 0;
        //As配列内の値をorderAscの小さい順にチェックしていく
        for (var n = 0; n < orderAsc.Count(); n++)
        {
            var tmp = 0;
            foreach (var i in As)
            {
                //もしorderAscの値よりAiが小さければそこまでのMax値を一時的に保持する
                if (orderAsc[n] <= i)
                {
                    tmp += orderAsc[n];
                }
                else
                {
                    if (tmpMax < tmp)
                    {
                        tmpMax = tmp;
                    }
                    tmp = 0;
                }
            }
            //最大値を更新していればMaxを入れ替え
            if (tmpMax < tmp)
            {
                tmpMax = tmp;
            }
        }
        Console.WriteLine(tmpMax);
    }
}

AtCoder Beginner Contest 188振り返り

ABC188に参加しました。ABC3問を復習します。

A - Three-Point Shot

バスケットボールの試合が行われており、現在の両チームの得点はX対Yです。
ここでX≠Yであることが保証されます。現在劣勢であるチームが、3ポイントシュートを一本成功させて優勢に立つことはできますか?
つまり、現在得点が低い側のチームが3点を得た場合、そのチームの得点が他方のチームの得点より真に高くなるかを判定してください。
◆制約
0≤X≤100
0≤Y≤100
X≠Y
X,Yは整数である
https://atcoder.jp/contests/abc188/tasks/abc188_a

using System;
using System.Collections.Generic;
using System.Linq;

class Hello
{
    static void Main(string[] args)
    {
        //X,Yの値を保持する
        var X_Y = Console.ReadLine().Split().Select(x => int.Parse(x)).ToArray();
        var X = X_Y[0];
        var Y = X_Y[1];
        //回答用変数
        var ans = "No";
        if (X < Y)
        {
            if (Y < X + 3)
            {
                ans = "Yes";
            }
        }
        else
        {
            if (X < Y + 3)
            {
                ans = "Yes";
            }
        }
        Console.WriteLine(ans);
    }
}

B - Orthogonality

2つのN次元ベクトルA=(A1,A2,A3,…,AN),B=(B1,B2,B3,…,BN)が与えられます。AとBの内積が0かどうかを判定してください。
すなわち、A1B1+A2B2+A3B3+⋯+ANBN=0 かどうかを判定してください。
◆制約
1≤N≤100000
−100≤Ai≤100
−100≤Bi≤100
入力に含まれる値は全て整数である
https://atcoder.jp/contests/abc188/tasks/abc188_b

using System;
using System.Collections.Generic;
using System.Linq;

class Hello
{
    static void Main(string[] args)
    {
        //Nの値を保持する
        //var X_Y = Console.ReadLine().Split().Select(x => int.Parse(x)).ToArray();
        var N = int.Parse(Console.ReadLine());
        //AとBの値を保持する
        var As = Console.ReadLine().Split().Select(x => int.Parse(x)).ToArray();
        var Bs = Console.ReadLine().Split().Select(x => int.Parse(x)).ToArray();
        //Nの数分ループしてAiとBiの積の和を計算する
        var ans = 0;
        for (int i = 0; i < N; i++)
        {
            ans += As[i] * Bs[i];
        }
        if (ans == 0)
        {
            Console.WriteLine("Yes");
        }
        else
        {
            Console.WriteLine("No");
        }
    }
}

C - ABC Tournament

選手1から選手2^Nまでの2^N人の選手がトーナメント形式のプログラミング対決をします。
選手iのレートはAiです。
どの2人の選手のレートも異なり、2人の選手が対戦すると常にレートが高い方が勝ちます。
トーナメント表は完全二分木の形をしています。
より正確には、このトーナメントは以下の要領で行われます。
i=1,2,3,…,Nについて順に、以下のことが行われる。
各整数 j(1≤j≤2^(N−i)) について、まだ負けたことのない選手のうち、 2j−1番目に番号の小さい選手と2j番目に番号の小さい選手が対戦する。
準優勝する、すなわち最後に行われる対戦において負ける選手の番号を求めてください。
◆制約
1≤N≤16
1≤Ai≤10^9
Aiは相異なる
入力に含まれる値は全て整数である
https://atcoder.jp/contests/abc188/tasks/abc188_c

using System;
using System.Collections.Generic;
using System.Linq;
//using System.Array;
class Hello
{
    static void Main(string[] args)
    {
        //Nの値を保持する
        var N = (int)Math.Pow(2,int.Parse(Console.ReadLine()));
        //トーナメントの右左のブロックで最強のメンバーを特定するためNの半分の値を保持する
	var half = N/2;
        var orgArray = Console.ReadLine().Split().Select(e => int.Parse(e)).ToArray();
        var aArray = new int[half];
        var bArray = new int[half];
	//全参加者の半分ずつ(トーナメントの半分ずつ)で分ける
        Array.Copy(orgArray,0,aArray,0,half);
        Array.Copy(orgArray,half,bArray,0,half);
	//各ブロックの最強メンバーを特定する
        var aMax = aArray.Max();
        var bMax = bArray.Max();
        if(aMax < bMax)
        {
	    //Bブロック(全メンバーの後半)の優勝ならAブロックの最強メンバーが優勝
            Console.WriteLine(Array.IndexOf(aArray,aMax)+1);
        }
        else
        {
	    //Aブロック(全メンバーの前半)の優勝ならBブロックの最強メンバーが優勝
            Console.WriteLine(Array.IndexOf(bArray,bMax)+1+half);
        }
    }
}

過去問トライアル AtCoder Beginner Contest 166

ABC166のABC問題を制限時間なしで挑戦してみました。時間はかかりましたがABCすべてにACすることができました。ABC3問を復習します。

A – A?C

AtCoder社は、毎週土曜日にコンテストを開催しています。コンテストにはABCとARCの2つの種類があり、毎週どちらか一方が開催されます。
ABCが開催された次の週にはARCが開催され、ARCが行われた次の週にはABCが開催されます。
先週開催されたコンテストを表す文字列Sが与えられるので、今週開催されるコンテストを表す文字列を出力してください。
◆制約
SはABCまたはARC
A - A?C

using System;
using System.Collections.Generic;
using System.Linq;
public class Hello
{
    public static void Main()
    {
        //入力を保持する
        var S = Console.ReadLine();        
        if (S.Equals("ABC"))
        {
            Console.WriteLine("ARC");
            return;
        }
        if (S.Equals("ARC"))
        {
            Console.WriteLine("ABC");
            return;
        }
    }
}

B – Trick or Treat

ある街に、N人のすぬけ君(すぬけ君1 、すぬけ君2、…、すぬけ君N)が住んでいます。
この街には、K種類のお菓子(お菓子1、お菓子2、….、お菓子K)が売られています。
お菓子iを持っているのは、すぬけ君Ai,1,Ai,2,⋯,Ai,diの計di 人です。
高橋君は今からこの街を回り、お菓子を 1 つも持っていないすぬけ君にいたずらをします。このとき、何人のすぬけ君がいたずらを受けるでしょうか。
◆制約
入力は全て整数
1≤N≤100
1≤K≤100
1≤di≤N
1≤Ai,1<...<Ai,di≤N
B - Trick or Treat

using System;
using System.Collections.Generic;
using System.Linq;
public class Hello
{
    public static void Main()
    {
        //入力を保持する
        var NK = Console.ReadLine().Split().Select(e => int.Parse(e)).ToArray();
        //すぬけ君の数
        var N = NK[0];
        //お菓子の種類
        var K = NK[1];
        var candyFlgs = new bool[N + 1];
        //K種のお菓子分入力を受ける
        for(var n = 0;n < K; n++)
        {
            //お菓子を持っている人数分ループを実施する
            var loop = int.Parse(Console.ReadLine());
            //お菓子を持っている個人の配列を保持する
            var people = Console.ReadLine().Split().Select(e => int.Parse(e)).ToArray();
            for( var l = 0; l < loop; l++)
            {
                //お菓子を持っているすぬけ君をtrueとする
                candyFlgs[people[l]] = true;
            }
        }
        var ans =0;
        //お菓子を持っていないすぬけ君の数を数える
        for(var indx = 1;indx < candyFlgs.Length;indx++)
        {
            if(candyFlgs[indx] == false)
            {
                ans++;
            }
        }
        Console.WriteLine(ans);
    }
}

C – Peaks

AtCoder丘陵にはN個の展望台があり、展望台iの標高はHiです。また、異なる展望台どうしを結ぶM本の道があり、道jは展望台Ajと展望台Bjを結んでいます。
展望台iが良い展望台であるとは、展望台iから一本の道を使って辿り着けるどの展望台よりも展望台iの方が標高が高いことをいいます。
展望台iから一本の道を使って辿り着ける展望台が存在しない場合も、展望台iは良い展望台であるといいます。
良い展望台がいくつあるか求めてください。
制約
2≤N≤10^5
1≤M≤10^5
1≤Hi≤10^9
1≤Ai,Bi≤N
Ai≠Bi
同じ展望台の組を結ぶ道が複数あることもある。
入力中の値はすべて整数である。
C - Peaks

using System;
using System.Collections.Generic;
using System.Linq;
public class Hello
{
    public static void Main()
    {
        
        var NM = Console.ReadLine().Split().Select(e => int.Parse(e)).ToArray();
        //展望台の数
        var N = NM[0];
        //道の数
        var M = NM[1];
        //高さを高さ配列に保持する
        var height = Console.ReadLine().Split().Select(e => int.Parse(e)).ToArray();
        var conn = new Dictionary<int,List<int>>();
        //pathをもたない展望台を記録するための配列
        var havePath = new bool[N];
        for(int num = 0;num < M;num++)
        {
            //pathの入力
            var path = Console.ReadLine().Split().Select(e => int.Parse(e)).ToArray();
            var A = path[0];
            var B = path[1];
            //起点となる展望台がすでに存在すれば行き先を追加
            // 存在しなければ生成する
            if(!conn.ContainsKey(A))
            {
                conn[A] = new List<int>();
                conn[A].Add(B);
            }
            else
            {
                conn[A].Add(B);
            }
            if(!conn.ContainsKey(B))
            {
                conn[B] = new List<int>();
                conn[B].Add(A);
            }
            else
            {
                conn[B].Add(A);
            }
            //行き先をもつ展望台を記録する
            havePath[A-1]=true;
            havePath[B-1]=true;
        }
        var ans = 0;
        //生成したDictionaryをすべてループする
        foreach(var c in conn)
        {
            //Keyとなる展望台の標高を保持する
            var heightNow = height[c.Key-1];
            var flg = true;
            foreach(var val in c.Value)
            {
                //標高が他の展望台以下であるなら回答になりえない
                if(heightNow <= height[val-1])
                {
                    flg =false;
                    break;
                }
            }
            if(flg)
            {
                ans++;
            }
        }
        Console.WriteLine(ans + havePath.Count(e => e == false));
    }
}

有休を使ってセブ留学した話 -留学を終えて-

今回の留学を体験して、いかに自分の英語が通用しないのかよくわかりました。それ以前に、言葉によるコミュニケーションに対する苦手意識が顕著に現れました。日本語にしろ英語にしろともかく人と接する機会をもっと増やしていきたいと思います。

英語学習に関しては、正直日本でどのようにスキルアップを図ればよいか、わかりかねています。しかし、まずはできそうなことから以下の2点を継続して英語力の向上に努めていきたいです。

TEDの動画視聴(https://www.ted.com/)
本ブログの更新


これらの勉強を継続的に行い、今回の留学経験を実のある経験にしていこうと思っています。

有休を使ってセブ留学した話 -授業編-

セブ島には数多くの語学学校が存在しています。数ある選択肢の中で自分に合った学校を探すため留学エージェントを頼りました。語学学校の選択基準は下記の通りでした。

社会人の受け入れ実績があること

⇒ 最終的な目標設定をビジネスシーンで利用できる英語力に位置付けていたので、なるべく多くの社会人留学生を受け入れている学校が望ましかったです。

社会人の多い学校であること

⇒ 留学は学生が多いというイメージが大きかったので私のような年配の人間は学校で浮いてしまうのではないかという不安がありました。

大規模な学校であること

⇒ 規模の大きな学校のほうが異文化交流の機会を期待できます。

上記3点の基準を伝えたところSMEAGのキャピタルキャンパスを提案してもらいました。SMEAGではキャンパスが3つ用意されており、キャピタルキャンパスは最も規則の緩いキャンパスです。有休消化で留学しているので、勉強ばかりではなく遊ぶことも念頭に置いて本キャンパスを選ぶことにしました。

しかし、授業スケジュールを見ると朝から晩までびっしりと授業が組まれていました。

以下ではどのような授業を受講したのか、その詳細を記します。

6:40 – 8:00 モーニングスパルタ
BCCのニュース原稿の穴埋め箇所に実際のニュースを聞きながら適切な単語を埋めていく、いわゆるディクテーションの授業でした。授業の始まりに前日のニュースの要約を英語で発表しなければならなかったので、留学中唯一授業後の復習を実施しました。ニュース原稿に使われる単語は単純なものがほとんどでしたが全く聞き取れませんでした。海外アナウンサーの発音ですから聞き取りやすいはずだと侮っていましたが、スピードが早すぎてついてゆけませんでした。

8:40 – 10:15 グループディスカッション(教師1人、生徒4人)
台湾人女性2人、韓国人女性1人と一緒にグループディスカッションのクラスを受講しました。毎回異なるテーマで各々意見を言い合いましたが、英語で何といえばいいのかわからないことばかりでかなり四苦八苦しながら発言していました。伝わったときの嬉しさはありましたが、同時に伝わらなかった時に訪れる微妙な空気が怖くて徐々に発言機会を恐れるようになっていきました。2週間の留学で日本に持ち帰ってきたのは、英語でコミュニケーションをとれた達成感よりは、伝わらなかったときの恐怖心です。英語を話す機会を増やして課題を解決してゆきたいと思います。

10:25 – 12:00 1 on 1(ライティング&リーディング)
予め用意されたテキストの問題を解き、その後講師と間違えた個所を復習していく形式の授業でした。グループディスカッションとは異なり1対1形式の授業で、英語を話さないわけにはいきませんでした。一方で1対1だからこそ、伝わらない、わからない部分は徹底的に伝えよう、理解しようと努めることができました。リーディングに関しては毎日「家族とは」、「仕事とは」などのテーマをもらい、私が書いた英文を毎日添削してもらいました。

13:00 – 14:35 Bussiness Class
この授業は選択授業のため一度も出席しませんでした。

14:45 – 16:20 1 on 1(リスニング&スピーキング)
ライティング&スピーキングの授業と同様テキストの問題を解いた後で、講師と復習をしました。
スピーキングの練習として、いろいろな種類の写真を英語で描写する訓練を行いました。

16:30 – 18:05 Music Class
過去にヒットした洋楽の歌詞を聞き取る授業でした。聞き取りが終わった後、歌詞に使われている文法の解説してもらいました。授業の後半では、講師から出された文法の課題に対し、4人ごとのグループに分かれて、検討と発表をしました。何より難しかったのは、英語の文法を英語で説明することでした。

19:00 – 20:35 イブニングスパルタ
本授業でも文法を中心に講義が行われました。毎週木曜日は週一でテストが行われました。

留学生の国籍は韓国、中国、台湾、モンゴル、ロシア、サウジアラビアなど様々で、世界には本当に色々な人がいるのだなと痛感しました。英語を話すことができれば、国籍が違えど会話ができることに感動しました。

有休を使ってセブ留学した話 -アクティビティ編-

2週間の滞在期間中セブでの週末を楽しめるチャンスは一度しかありませんでした。今回の記事では2019年11月30日(土)-12月1日(日)の二日間で体験した下記アクティビティを紹介します。

ジンベエザメ鑑賞 11月30日(土)
ツマログ滝 11月30日(土)
オスメニアピーク 12月01日(日)
 

ジンベエザメ鑑賞
入学日が重なった日本人3人と週末の過ごし方を相談して、ジンベエザメ鑑賞に行くことに決めました。早朝5時に待ち合わせてサウスバスターミナルへ向かいます。

ジンベエザメは早朝に海岸近くへ餌を食べに来て、午前11時ごろには沖に戻ってしまいます。さらに、目的地のオスロブまではバスで4時間ほどかかります。今思うと朝5時出発では少し遅かったかもしれません。

ターミナルでは地元客、観光客でごった返していました。ターミナルにたむろしている得体のしれない人たちに話しかけられ、一瞬警戒するも、オスロブと一言いうと、親切にオスロブ行きのバスを案内してくれました。

車内は異様なほど冷房が効いていました。羽織るもの一枚持っていくことをお勧めします。

目的地に近づくと、バススタッフが“Whale Shark !”と呼び掛けてくれました。

到着してすぐに、手近なショップで受付を済ませました。

オプションは下記の通り3点ありましたが、スキューバダイビングで鑑賞することに決めました。最も間近でジンベエザメを観察できることが決め手になりました。値段は1800ペソ(訳4600円)と一番高かったです。

船の上から鑑賞
シュノーケリング
キューバダイビング
浜辺で待たされること30分、前の観光客の案内を終えたインストラクターたちが待機場所に戻って来るや否や、もうサメが沖合に戻ってしまうから早く準備しろとせかされます。

急いでウェットスーツを着用し、酸素ボンベを背負い、5キロほどの重りを腰に巻き付けると途端に緊張してきました。息の仕方、いろいろな合図の意味など簡単な講習を受けましたが、繰り返し注意を受けたのは決してパニックならないことです。パニックになりやすい場面とその対処法を事前に教えてもらいました。主な内容としては下記のとおりです。

 

鼻から呼吸をしようとして、ゴーグル内に水がはいってきてしまう。

⇒ 水中で少し上を向けばゴーグルの上辺に水が移動するので視界が開ける。

吸い込む酸素量が少なくて呼吸が浅くなってしまう。

⇒ 酸素を吸うときは深く吸う (ただし浮力も増します。)

酸素吸入口(マウスピース)が口からはずれてしまう。

⇒ 外れても慌てず、落ち着いて口に戻して、ホースに入っている水を抜くため勢いよく息を吐く(息を吐くと水が抜ける仕様になっています)。

 

海岸沿いで足ひれを装着して、ダイビングが始まりました。海中に潜るとすぐにパニックに近い状態になりました。口も鼻もふさがれているため、急激に不安になったのです。時間がたつにつれて呼吸のコツをつかみ始め、海中の景色を楽しもうとした矢先、今度は耳が痛くなってきました。すぐに耳抜きを実施したところ、痛みは一時的には収まりましたがここでも若干焦りました。

徐々に海中に慣れていくと、少しずづ周りの景色を楽しめる心の余裕が出てきました。サンゴ礁に住まう小さな魚たちやコバンザメを従えて泳ぐウミガメなどを観察することができました。そして、突如としてそれは目の前に現れました!体長5メートルはあろうかというほど巨大なジンベエザメが悠然と姿を現し、目の前を通過していきました。

こんなに間近で見れるとは思っていなかったので、大興奮でした。スキューバダイビングも含め、とても良い経験になりました。

ツマログ滝
ジンベエザメ鑑賞を終えると、浜辺のレストランで昼食をとりました。そこで次なる目的地を相談し、ツマログ滝へ行くことに決めました。ジンベエザメ鑑賞場所から車で15分ぐらいの距離にあります。

バスの停留所付近でたむろしている男性たちに相談すると、ワゴン車で連れて行ってくれました(往復200ペソ/1人 約520円)。目的地付近でバイクに乗り換えてツマログ滝へ到着。入場料はなぜか無料でした。ツマログ滝は、迫力のある滝というよりは、流れ落ちる水量が少ない神秘的な滝でした。

オスメニアピーク
ツマログからジンベエザメスポットへ戻ると、日本人グループを離れ、一人で宿泊先を探しました。彼らは翌日セブシティへ戻って市内を観光する予定でしたが、私はどうしてもオスメニアピークという山へ上りたかったのです。オスメニアピークとはセブ島で最も高い山です。最も高いと言っても1015mしかありません。さらに観光客向けに整備が進められており、登山口から頂上までは20分しかかかりません。

登りごたえのない山ではありますが、「海外で登山をする」というあこがれが強く、セブ滞在中に絶対に経験しておきたいアクティビティでした。

宿泊先を全くあてがないまま探し始めた私は、土地鑑に長けている地元のバイクタクシードライバーを頼りにしました。バイクタクシーの若者に安いホテルを探しているから紹介してほしいというとすぐに案内してもらえました。ホテルの主人に値段を尋ねると、「お前の言い値でいい」と言われたので800ペソ払いました。

部屋には屋根と鍵付きのドアはありましたが窓がありませんでした。夜中蚊に刺され、痒くて仕方ありませんでした。蚊はいろいろな病気を媒介するので、窓のあるホテルに泊まることをお勧めします。

翌朝、バイクタクシーでダラゲテという町まで連れて行ってもらい(700ペソ)、さらにそこから馬力のありそうなバイクで登山口まで連れて行ってもらいました(往復300ペソ)。

登山口でノートに記入を済ませ、いよいよ登山開始。そしてあっという間に頂上に到着しました。少し物足りなさを感じながらも、ホテルから一人で頂上までたどり着くことができたため、達成感がありました。

有休を使ってセブ留学した話 -食事編-

今回の留学で最も楽しみにしていたものが、なんといっても食事でした。
事前に得た情報では、セブにはおいしい料理やお店が豊富にあるとのことだったので楽しみにしていました。
留学先の語学学校で提供される食事もおいしいと評判で、これも楽しみにしていました。

しかし、セブに到着して2日を過ぎたころ体調に異変が。
何か口にして、しばらくすると腹痛を感じるのです。

自分なりに原因を考えてみると下記3点が思い当たりました。

水質の違い
セブの水は硬水、日本の水は軟水で硬度が異なり、多くの日本人が初めの1週間はお腹をこわすそうです。学校内にはいたるところにウォーターサーバーが設置されていたため、水道水を口にすることはありませんでした。歯磨きやうがいで使用する水もすべてウォータサーバーの水を使用しました。それでも腹痛は避けられませんでした。

生活環境の変化によるストレス
異国の生徒と同居生活で多少のストレスを感じていたのかもしれません。男四人部屋(日本人2人/台湾人2人)で学生時代の寮生活を思い出しました。

冷房の効きすぎ
セブは常夏の気候ですが、教室や映画館、バス内など室内は異様な程冷房が効いていました。これも腹痛を誘発する原因だったと思います。

その後帰国するまで腹痛はおさまることはありませんでした。
食べ過ぎるとお腹が痛くなるため、学校で提供される食事では最低限の栄養を摂取することばかり気にしていました。そのため、あまり味を覚えていません(汗)

しかし、そんな中でもお腹の調子を見ながら、うまいものを求めて方々へ出かけました。

今回は特に印象に残っている下記3点を紹介します。

ACACIA STEAKHOUSEのステーキ
ファーストフード(Chowking/Jollibee)
Turksのピタサンド
ACACIA STEAKHOUSEのステーキ
タクシーで目的地を伝えましたが、地元の運転手の方でも場所が曖昧な様子だったのでGoogleMapを片手にナビをしながら向かってもらいました。地図を見てもわかる通り、店の場所が細い道沿いにあるので注意が必要です。

Flat Iron Steak 495ペソ(約1200円)
焼き方はミディアムでいただきました。
一噛みするごとにお肉の弾力を感じることができる、食べごたえのあるステーキでした。

ファーストフード(Chowking/Jollibee)
グルメな友人におすすめのファーストフード店を紹介してもらったので、時間があればぜひ立ち寄りたいと思っていました。

Chowkingは中華料理、Jolibeeはハンバーガーやパスタを扱うファーストフード店です。

探し当てることができるのか不安でしたが、ChowkingとJolibeeはセブシティのいたるところで見かけました。

とくにJolibeeはフィリピンではマクドナルドを凌ぐ人気を集めていて、ファーストフードシェアNo1を誇ります。今後日本に進出するときが来てもおかしくありません。

Chowking

お昼時、ササっと昼食を済ませるため上写真のメニューを注文しました。さっぱりした味でおいしかったです。 お値段 :75ペソ(約150円)

Jollibee

この時は、おなかの調子が良くて、勢いで5品(飲み物含む)も注文しました。炭水化物3品とチキンとコーラです。この後太ったのは言うまでもありません。フィリピン人は甘いものを好むそうで、チキンナゲットに付属するケチャップがトマトではなくバナナケチャップでした。バナナケチャップについては意見が分かれそうです。

バナナケチャップ以外気になる点はなく、すべておいしく完食しました。

Turksのピタサンド
セブ島で最も印象に残っている食べ物がこのTurksのピタサンドです


 

成田発、マニラ経由でセブ島へ行きましたが、マニラでのトランジット中、初めてこの商品を購入しました。

一口食べた瞬間、日本では感じたことのない食感と風味で言葉を失いました。
控えめに言って、最高にうまかったです。
値段もかなりお手頃(約140円)で量もちょうどよく、滞在中、外出するたびに食べました。フィリピンでは人気の一品らしくいろいろな場所で見かけました。

帰国して同僚のフィリピン人にこの商品について聞いてみると、Turksという名前の通りトルコ料理でした。日本でも同じものが販売されていないか調べたのですがそれらしい情報は見つかりませんでした。最も近い料理でいうと中東料理のケバブになるのでしょうか。ケバブは食べたことがないので一度トライしてみようと思います。
Turksのピタサンドがいつか日本にも普及されることを待ち望むばかりです。

セブ島に行かれた際には是非ご賞味ください!