QOJ.ac

QOJ

実行時間制限: 3 s メモリ制限: 256 MB 満点: 100

#1215. Vegger

統計

Du har fått tak i et videospill utgitt av JOI Corp. Det er et vellaget spill, og du har spilt det hver dag med stor glede.

En dag dukket et brett kalt «Laser» opp blant spillerne. Det virker som dette brettet er ekstremt vanskelig, og det sies at selv dyktige spillere bare klarer det med en svært liten sannsynlighet. Mens du prøvde deg på brettet mange ganger, innså du at det er en mulighet for å klare det ved å ta veldig raske avgjørelser, og du tenkte at du kanskje kunne håndtere det ved å lage et program.

Laserbrettet foregår på et sted der det er plassert $N$ vegger. Brettet er rektangulært og er delt inn i $1 \times 1$ kvadratiske ruter. Hver rute representeres av $(x, y)$ ved hjelp av heltall $x, y \ge 0$. $(0, 0)$ er ruten i nederste venstre hjørne, og $(x, y)$ representerer ruten $x$ ruter til høyre og $y$ ruter opp fra $(0, 0)$.

Når brettet starter, dukker fiender opp og angriper. $M$ angrep utføres etter hverandre. I det $j$-te angrepet skyter fienden en laser rett fra ruten $(P_j, N+1)$ mot ruten $(P_j, 0)$.

Hver vegg er plassert på flere påfølgende ruter med samme $y$-koordinat. Vegg $i$ ($1 \le i \le N$) er et rektangel med en horisontal bredde på $B_i - A_i + 1$ og en vertikal bredde på $1$. Ved starten av brettet opptar den rutene fra $(A_i, i)$ til $(B_i, i)$. Du kan flytte veggene horisontalt så mange ganger du vil, både før fiendens første angrep og mellom hvilke som helst to fiendeangrep. I ett trekk kan du flytte én vegg én rute til høyre eller én rute til venstre.

Når en laser treffer en vegg, svekkes kraften dens. Du ønsker å minimere kraften til laseren ved å flytte veggene slik at laseren treffer alle veggene.

På dette brettet ønsker du å minimere det totale antallet veggbevegelser.

Oppgave

Gitt startposisjonene til veggene og posisjonene til fiendens angrep, beregn det minste antallet bevegelser for hver vegg for å sikre at hver laser treffer hver vegg.

Inndata

Les følgende data fra standard inndata:

  • Den første linjen inneholder to mellomromseparerte heltall $N$ og $M$. Dette angir at det er $N$ vegger på dette brettet og at $M$ angrep vil bli utført.
  • Den $i$-te linjen av de neste $N$ linjene ($1 \le i \le N$) inneholder to mellomromseparerte heltall $A_i$ og $B_i$. Dette angir at ved starten av brettet er vegg $i$ plassert fra rute $(A_i, i)$ til rute $(B_i, i)$.
  • Den $j$-te linjen av de neste $M$ linjene ($1 \le j \le M$) inneholder et heltall $P_j$. Dette angir at i det $j$-te angrepet skyter fienden en laser rett fra rute $(P_j, N+1)$ mot rute $(P_j, 0)$.

Utdata

Skriv ut $N$ linjer til standard utdata. Den $i$-te linjen ($1 \le i \le N$) skal inneholde det minste antallet bevegelser for vegg $i$.

Begrensninger

Alle inndata oppfyller følgende betingelser:

  • $1 \le N \le 200\,000$.
  • $1 \le M \le 200\,000$.
  • $0 \le A_i \le B_i \le 1\,000\,000\,000$ ($1 \le i \le N$).
  • $0 \le P_j \le 1\,000\,000\,000$ ($1 \le j \le M$).

Deloppgaver

Deloppgave 1 [10 poeng]

  • $N = 1$ er oppfylt.

Deloppgave 2 [45 poeng]

  • $A_i = 0$ ($1 \le i \le N$) er oppfylt.

Deloppgave 3 [45 poeng]

  • Det er ingen ytterligere begrensninger.

Eksempler

Inndata 1

4 4
0 3
4 4
2 7
8 11
6
4
3
8

Utdata 1

5
10
1
7

Forklaring

I disse inndataene er én måte å minimere antallet veggbevegelser på som følger:

  • Før det 1. angrepet: flytt vegg 1 til høyre 3 ganger, flytt vegg 2 til høyre 2 ganger, ikke flytt vegg 3, og flytt vegg 4 til venstre 2 ganger.
  • Før det 2. angrepet: ikke flytt vegg 1, flytt vegg 2 til venstre 2 ganger, ikke flytt vegg 3, og flytt vegg 4 til venstre 2 ganger.
  • Før det 3. angrepet: ikke flytt vegg 1, flytt vegg 2 til venstre 1 gang, ikke flytt vegg 3, og flytt vegg 4 til venstre 1 gang.
  • Før det 4. angrepet: flytt vegg 1 til høyre 2 ganger, flytt vegg 2 til høyre 5 ganger, flytt vegg 3 til høyre 1 gang, og flytt vegg 4 til høyre 2 ganger.

På denne måten flyttes vegg 1 totalt 5 ganger, vegg 2 flyttes 10 ganger, vegg 3 flyttes 1 gang og vegg 4 flyttes 7 ganger.

stage_start.png

Starten av brettet

1st_attack.png

1. angrep

2nd_attack.png

2. angrep

3rd_attack.png

3. angrep

4th_attack.png

4. angrep

Inndata 2

7 11
12 39
22 23
5 38
6 47
10 43
0 50
18 46
38
19
15
1
12
29
29
0
6
40
6

Utdata 2

34
178
13
6
18
0
36

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 0
No discussions in this category.

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.