QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 256 MB مجموع النقاط: 100

#23832. Boblesortering

الإحصائيات

Problembeskrivelse

Boblesortering er en av algoritmene for å sortere en følge. Anta at vi ønsker å sortere en følge $A$ med lengde $N$ i stigende rekkefølge. Boblesortering bytter plass på $2$ nabotall dersom størrelsesforholdet mellom dem er feil. Én gjennomgang består i å gå gjennom følgen fra start til slutt og bytte plass på disse $2$ tallene hver gang $A_i > A_{i+1}$ for $i = 1, 2, \dots, N - 1$ i denne rekkefølgen. Det er kjent at ved å gjenta denne gjennomgangen $N - 1$ ganger vil følgen bli sortert i stigende rekkefølge.

Antallet bytter ved boblesortering på en følge $A$ er antallet ganger heltall bytter plass når algoritmen ovenfor brukes på følgen $A$. (Selv om algoritmer og implementasjoner kjent som boblesortering kan ha små forskjeller i løkkerekkefølge, intervaller og stoppbetingelser, er det kjent at antallet heltallsbytter når de brukes på samme følge ikke endres som følge av disse forskjellene.)

For eksempel er følgende program en funksjon skrevet i C som sorterer en heltallstabell a med lengde n ved hjelp av boblesortering.

void bubble_sort(int *a, int n) {
  int i, j;
  for (i = 0; i < n - 1; ++i) {
    for (j = 0; j < n - 1; ++j) {
      if (a[j] > a[j + 1]) {
        /* The following 3 lines correspond to 1 swap of integers */
        int x = a[j];
        a[j] = a[j + 1];
        a[j + 1] = x;
      }
    }
  }
}

Oppgave

Det gis en følge $A$ med lengde $N$. Anta at vi lager en følge $A'$ ved å bytte plass på $2$ heltall på vilkårlige posisjoner i følgen $A$ nøyaktig $1$ gang. Skriv et program for å finne den minste mulige verdien for antallet bytter ved boblesortering på følgen $A'$. (Merk at de $2$ heltallene som byttes først ikke nødvendigvis trenger å stå ved siden av hverandre.)

Begrensninger

  • $1 \le N \le 100000$: lengden på følgen $A$.
  • $1 \le A_i \le 1000000000$: størrelsen på tallene i følgen $A$.

Inndata

Les inn følgende data fra standard inndata:

  • På den $1$. linjen står et heltall $N$. $N$ representerer lengden på følgen $A$.
  • På den $i$. linjen ($1 \le i \le N$) av de påfølgende $N$ linjene står et heltall $A_i$. Dette representerer det $i$. heltallet i følgen $A$.

Utdata

Skriv ut et heltall på $1$ linje til standard utdata som representerer det minste antallet bytter ved boblesortering på følgen $A'$.

Vurderingskriterier

  • For $10\%$ av poengene gjelder $N \le 1000$, og for alle $i, j$ ($1 \le i < j \le N$) gjelder $A_i \ne A_j$.
  • For $30\%$ av poengene gjelder $N \le 5000$, og for alle $i, j$ ($1 \le i < j \le N$) gjelder $A_i \ne A_j$.
  • For $80\%$ av poengene gjelder for alle $i, j$ ($1 \le i < j \le N$) at $A_i \ne A_j$.

Eksempel

Eksempelinndata 1

5
10
3
6
8
1

Eksempelutdata 1

0

Hvis vi bytter det første tallet $10$ og det siste tallet $1$ i følgen $A$, blir følgen $A'$ ferdig sortert, og antallet bytter i boblesortering blir $0$.


Eksempelinndata 2

5
3
1
7
9
5

Eksempelutdata 2

2

Ved å bytte det $3$. tallet $7$ og det siste tallet $5$ i følgen $A$, blir følgen $A'$ lik $3, 1, 5, 9, 7$. Antallet bytter ved boblesortering på $A'$ er $2$.


Eksempelinndata 3

3
1
2
3

Eksempelutdata 3

1

Selv om følgen $A$ er sortert helt fra starten av, må det utføres et bytte når følgen $A'$ lages.

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.