Universal Cup Judging System

Universal Cup

Limite de temps : 1 s Limite de mémoire : 2048 MB Points totaux : 100 Difficulté: [afficher] Interactif Hackable ✓
Statistiques

To jest zadanie interaktywne.

Little Cyan Fish ma ukryty prosty graf nieskierowany o $n$ wierzchołkach, ponumerowanych od $1$ do $n$. Znasz wartość $n$, ale nie znasz żadnej z krawędzi. Little Cyan Fish uwielbia pojęcie przekroju (cut). Dla zbioru wierzchołków $S$ niech $\operatorname{cut}(S)$ oznacza liczbę krawędzi mających dokładnie jeden koniec w zbiorze $S$.

problem_22880_c88365aab9e24b99bbd5b96995883b80.png

Little Cyan Fish pozwala ci porównywać przekroje poprzez zadawanie zapytań. W jednym zapytaniu wybierasz dwa zbiory wierzchołków $S_1$ oraz $S_2$. Little Cyan Fish mówi ci, czy wartość $\operatorname{cut}(S_1)$ jest mniejsza, równa, czy większa od $\operatorname{cut}(S_2)$.

Prawdopodobnie potrafisz przewidzieć, że dalsza część treści będzie dotyczyć odtworzenia grafu, ale tym razem zadanie jest prostsze. Little Cyan Fish daje ci wierzchołek $u$ i chce, abyś znalazł wszystkie wierzchołki sąsiadujące z $u$ w co najwyżej $n + 10$ zapytaniach.

Wejście

Pierwszy wiersz wejścia zawiera dwie liczby całkowite $n$ oraz $u$ ($1 \le n \le 1000$, $1 \le u \le n$), oznaczające odpowiednio liczbę wierzchołków oraz dany wierzchołek. Następnie rozpoczyna się interakcja.

Interakcja

Aby zadać zapytanie, wypisz wiersz w następującym formacie:

$$?\ s_1\ s_2$$

gdzie $s_1$ oraz $s_2$ są napisami długości $n$, składającymi się wyłącznie ze znaków 0 oraz 1. Dla każdego $j \in \{1, 2\}$ wierzchołek $i$ należy do $S_j$ wtedy i tylko wtedy, gdy $i$-ty znak napisu $s_j$ jest równy 1. Zbiory mogą być puste, mogą się przecinać i mogą być równe.

Jako odpowiedź na zapytanie otrzymasz pojedynczy znak <, = lub >, oznaczający odpowiednio, że wartość $\operatorname{cut}(S_1)$ jest mniejsza, równa lub większa od $\operatorname{cut}(S_2)$. Musisz upewnić się, że liczba zadanych przez ciebie zapytań nie przekroczy $n + 10$.

Aby zgłosić odpowiedź, wypisz wiersz w następującym formacie:

$$!\ k\ v_1\ v_2\ \dots\ v_k$$

gdzie $k$ ($0 \le k \le n - 1$) to liczba wierzchołków sąsiadujących z $u$, natomiast $v_1, v_2, \ldots, v_k$ to ich parami różne numery w dowolnej kolejności. Jeśli $k = 0$, wypisz ! 0. Zgłoszenie odpowiedzi nie wlicza się do liczby zapytań. Twój program musi natychmiast zakończyć działanie po zgłoszeniu odpowiedzi.

Po wypisaniu zapytania lub zgłoszeniu odpowiedzi nie zapomnij wypisać znaku nowej linii oraz opróżnić bufora wyjścia (flush). Jeśli zadasz nieprawidłowe zapytanie lub przekroczysz limit zapytań, interaktor zamknie strumień wejściowy, a twój program musi zakończyć działanie.

W tym zadaniu interaktor jest adaptacyjny. Oznacza to, że graf może zmieniać się w zależności od twoich zapytań, o ile nie jest to sprzeczne z żadną dotychczasową odpowiedzią. Twoja odpowiedź musi być poprawna dla każdego grafu zgodnego ze wszystkimi otrzymanymi przez ciebie odpowiedziami.

Przykład

Wejście 1

4 1

<

=

<

=

Wyjście 1

? 0000 1000

? 0100 1100

? 0010 1010

? 0001 1001

! 2 2 4

Uwagi

Jeden z grafów zgodnych z przykładową interakcją ma krawędzie $(1, 2)$, $(1, 4)$ oraz $(2, 3)$.

problem_22880_2dcb0fb296e7aa6b2806ae2a9f6861fe.png

Narzędzie testujące: Udostępniono narzędzie testujące, aby pomóc zawodnikom w tworzeniu i testowaniu swoich rozwiązań. Możesz pobrać to narzędzie z załączników. Uruchom narzędzie z opcją -h, aby wyświetlić instrukcję użycia. Narzędzie sprawdza przebieg interakcji oraz zgłoszoną odpowiedź, ale nie egzekwuje limitu czasu ani pamięci.

Narzędzie testujące przez całą interakcję używa ustalonego grafu określonego w jego pliku wejściowym, podczas gdy oficjalny interaktor jest adaptacyjny. Pomyślne przejście testów przy użyciu narzędzia testującego nie gwarantuje, że twoje rozwiązanie jest poprawne w starciu z oficjalnym interaktorem.

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.