QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 256 MB Total points: 100 Communication

#1419. Sendiboði

Statistics

A og B, sem hafa verið valin sem fulltrúar Japans á Alþjóttaupplýsingafræðiólympíuleikunum, hafa ákveðið að spila „Sendiboðaleikinn“ við K framkvæmdastjóra japönsku nefndarinnar fyrir Alþjóðaupplýsingafræðiólympíuleikana til að bæta færni sína í upplýsingavinnslu. Reglur þessa leiks eru útskýrðar hér að neðan.

A og B eru einangruð í herbergjum eins og sýnt er á myndinni. Þó að innanhússsímar séu í herbergjum A, B og K framkvæmdastjóra getur aðeins K framkvæmdastjóri hafið símtal. Önnur samskiptaleiðir eru lokaðar og A og B mega ekki yfirgefa herbergi sín nema samkvæmt fyrirmælum.

problem_1419_edb52f042b7f1a5d61d20aefea23cc09.png

Herbergi A | Langur gangur | Herbergi K framkvæmdastjóra | Langur gangur | Herbergi B

Í upphafi leiksins segir K framkvæmdastjóri A jákvæða heiltölu $X$ í gegnum símann. Markmið leiksins er að A komi gildinu á $X$ rétt til skila til B án beinna samskipta þeirra á milli.

Í herbergi K framkvæmdastjóra er $4 \times 4$ reitanet. Látum $(i, j)$ tákna reitinn í $i$-tu röð og $j$-ta dálki ($1 \le i \le 4, 1 \le j \le 4$). Reitur $(1, 1)$ er efra vinstra hornið, $(1, 4)$ er efra hægra hornið, $(4, 1)$ er neðra vinstra hornið og $(4, 4)$ er neðra hægra hornið. Í upphafi leiksins er peði komið fyrir á einum af reitunum. Eftir það mun K framkvæmdastjóri ekki breyta reitnum sem peðið er á.

Frá þessum tímapunkti hringir K framkvæmdastjóri ítrekað í annaðhvort A eða B og kallar viðkomandi inn í herbergið. Í hvert sinn sem A eða B kemur inn í herbergi K framkvæmdastjóra verða þau að færa peðið á aðliggjandi reit (upp, niður, til vinstri eða til hægri). Eftir að hafa fært peðið fer A eða B aftur í sitt eigið herbergi. Ef B veit gildið á $X$ þegar B kemur í herbergi K framkvæmdastjóra getur B svarað K framkvæmdastjóra því í stað þess að færa peðið. Ef réttu gildi á $X$ er svarað telst það rétt svar; annars telst það rangt svar.

Tímasetningin þegar K framkvæmdastjóri kallar A eða B inn í herbergið er óregluleg, og A og B vita ekki í hvaða röð K framkvæmdastjóri kallar þau tvö inn í herbergið. Hins vegar ákveður K framkvæmdastjóri röðina sem kalla á þau tvö í upphafi leiksins, og tryggt er að K framkvæmdastjóri mun ekki kalla hvorki A né B oftar en 100 sinnum í röð. Ef B hefur ekki svarað gildinu á $X$ eftir að A eða B hefur snúið aftur í herbergi sitt eftir að K framkvæmdastjóri hefur kallað á A og B alls 10,000 sinnum, lýkur leiknum með röngu svari.

Verkefni

Útfærðu aðferðirnar fyrir A og B og búðu til forrit sem getur svarað rétt í „Sendiboðaleiknum“ sem lýst er hér að ofan.

Útfærsluatriði

Þú verður að skila tveimur skrám í sama forritunarmáli.

Fyrri skráin heitir playerA.c eða playerA.cpp. Þessi skrá útfærir aðferð A og verður að útfæra eftirfarandi föll:

  • void InitA(int T, int X) Þetta fall er kallað nákvæmlega einu sinni í upphafi. Viðfangið T er númer undirverkefnisins. Viðfangið X er jákvæða heiltalan sem A verður að koma til skila til B.

  • int GameA(int I, int J) Þetta fall er kallað þegar A kemur inn í herbergi K framkvæmdastjóra. Viðföngin I og J eru heiltölurnar sem tákna reitinn $(I, J)$ þar sem peðið er staðsett þegar A kemur inn í herbergi K framkvæmdastjóra, og uppfylla $1 \le I \le 4$ og $1 \le J \le 4$. Þetta fall verður að skila einni af heiltölunum $-1, -2, -3, -4$. Ef einhverju öðru gildi er skilað er það dæmt sem Wrong Answer [1] og keyrslu forritsins er hætt. Þessi gildi tákna eftirfarandi aðgerðir A:

    • $-1$: Færa peðið á reitinn fyrir ofan $(I - 1, J)$.
    • $-2$: Færa peðið á reitinn fyrir neðan $(I + 1, J)$.
    • $-3$: Færa peðið á reitinn til vinstri $(I, J - 1)$.
    • $-4$: Færa peðið á reitinn til hægri $(I, J + 1)$. Ef tilgreindur er leikur sem færir peðið út af borðinu er það dæmt sem Wrong Answer [2] og keyrslu forritsins er hætt.

Seinni skráin heitir playerB.c eða playerB.cpp. Þessi skrá útfærir aðferð B og verður að útfæra eftirfarandi föll:

  • void InitB(int T) Þetta fall er kallað nákvæmlega einu sinni í upphafi. Viðfangið T er númer undirverkefnisins.

  • int GameB(int I, int J) Þetta fall er kallað þegar B kemur inn í herbergi K framkvæmdastjóra. Viðföngin I og J eru heiltölurnar sem tákna reitinn $(I, J)$ þar sem peðið er staðsett þegar B kemur inn í herbergi K framkvæmdastjóra, og uppfylla $1 \le I \le 4$ og $1 \le J \le 4$. Þetta fall verður að skila einni af heiltölunum $-1, -2, -3, -4$, eða jákvæðri heiltölu $Y$. Ef einhverju öðru gildi er skilað er það dæmt sem Wrong Answer [3] og keyrslu forritsins er hætt. Þessi gildi tákna eftirfarandi aðgerðir B:

    • $-1$: Færa peðið á reitinn fyrir ofan $(I - 1, J)$.
    • $-2$: Færa peðið á reitinn fyrir neðan $(I + 1, J)$.
    • $-3$: Færa peðið á reitinn til vinstri $(I, J - 1)$.
    • $-4$: Færa peðið á reitinn til hægri $(I, J + 1)$. Ef tilgreindur er leikur sem færir peðið út af borðinu er það dæmt sem Wrong Answer [4] og keyrslu forritsins er hætt.
    • Jákvæð heiltala $Y$: Svara K framkvæmdastjóra að gildið á $X$ sé $Y$. Ef $X = Y$ er það rétt svar; annars er það dæmt sem Wrong Answer [5] og keyrslu forritsins er hætt.

Föllin GameA og GameB verða ekki kölluð oftar en 100 sinnum í röð fyrir hvort um sig. Einnig, ef GameB hefur ekki skilað jákvæðri heiltölu þegar GameA og GameB hafa verið kölluð alls 10,000 sinnum, er það dæmt sem Wrong Answer [6] og keyrslu forritsins er hætt.

Þér er frjálst að útfæra önnur föll eða skilgreina víðværar breytur til innri nota. Hins vegar, þar sem forritin tvö sem skilað er eru tengd saman við dæmatékkarann í eina keyranlega skrá, verður þú að skilgreina allar víðværar breytur og innri föll í hvorri skrá sem static til að komast hjá árekstrum við aðrar skrár. Við yfirferð er þetta forrit keyrt sem tvö aðskilin ferli, annað fyrir A og hitt fyrir B, þannig að ekki er hægt að deila víðværum breytum milli A-hliðarinnar og B-hliðarinnar. Lausnin þín má ekki á nokkurn hátt eiga samskipti við staðalinntak/-úttak eða neinar aðrar skrár.

Inntak

Dæmatékkarinn les eftirfarandi inntak af staðalinntaki:

  • Fyrsta línan inniheldur heiltölurnar $T, X, I_0, J_0$ aðskildar með bilum, sem tákna númer undirverkefnisins $T$, heiltöluna $X$ sem A verður að koma til skila til B og upphafsstaðsetningu $(I_0, J_0)$ peðsins í upphafi leiksins.
  • Önnur línan inniheldur streng af lengd nákvæmlega 10,000 sem samanstendur af tveimur tegundum stafa, 'A' og 'B'. Ef $k$-ti stafurinn ($1 \le k \le 10,000$) er 'A' eða 'B', þýðir það að $k$-ta fallið sem kallað er á eftir að InitA og InitB eru kölluð er GameA eða GameB, í þessari röð.

Úttak

Ef forritið lýkur keyrslu eðlilega skrifar dæmatékkarinn eftirfarandi upplýsingar á staðalúttak í einni línu:

  • Ef það er rétt er skrifað út "Accepted" (gæsalappir eru ekki skrifaðar út í raun; það sama á við hér að neðan).
  • Ef það er rangt er tegund rangs svars skrifuð út sem "Wrong Answer [1]" byggt á tölunum sem skrifaðar eru í kaflanum "Útfærsluatriði". Enn fremur, fyrir Wrong Answer [5], eru rétt gildi á $X$ og jákvæða heiltalan $Y$ sem fallið GameB skilaði skrifuð út sem Wrong Answer [5] : X = 2, Y = 3.

Takmarkanir

Öll inntaksgögn uppfylla eftirfarandi skilyrði:

  • $1 \le X \le 1,000,000,000$.

Undirverkefni

Undirverkefni 1 [20 stig]

  • Uppfyllir $T = 1$.
  • Kallað er á A í herbergi K framkvæmdastjóra fyrst, og síðan er kallað á A og B til skiptis í herbergi K framkvæmdastjóra. Það er að segja, eftir að kallað hefur verið á InitA og InitB, er kallað á föllin í röðinni GameA, GameB, GameA, GameB, ...

Undirverkefni 2 [20 stig]

  • Uppfyllir $T = 2$.
  • Staðsetning peðsins í upphafi leiksins er $(I_0, J_0) = (1, 1)$. Það er að segja, eftir að kallað hefur verið á InitA og InitB, er fyrst kallað á fallið GameA eða GameB með $I = 1, J = 1$ sem viðföng.

Undirverkefni 3 [60 stig]

  • Uppfyllir $T = 3$.

Athugasemd

Dæmi um inntak sem lesið er af dæmatékkaranum og dæmi um samsvarandi fallaköll eru sýnd hér að neðan.

Inntak
2 6 1 1
ABBAABAAABBBBBABBAABBBABBBBAAAAABABAABAABBBBABAAAA (sleppt)
A-hlið B-hlið
Kall Skilagildi Kall Skilagildi
InitA(2, 6) Ekkert
InitB(2) Ekkert
GameA(1, 1) -2
GameB(2, 1) -4
GameB(2, 2) -2
GameA(3, 2) -3
GameA(3, 1) -1
GameB(2, 1) 6

Athugið að þetta dæmi lýsir ekki endilega merkingarbærum samskiptum.

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 1
IDTypeStatusTitlePosted ByLast UpdatedActions
#451General DiscussionOpenFix the graderQingyuView

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.