4 / 17
Aug 2018

Błędna odpowiedź. Python 3.7

n = int(input())
pos1, spd1 = map(int, input().split())
rows = 1
for i in range(n-1):
    pos2, spd2 = map(int, input().split())
    if spd2 > spd1:
        pos1 = pos2
    elif spd2 == spd1:
        if pos1+1 == pos2:
            pos1 = pos2
        else:
            rows += 1
            pos1 = pos2
            spd1 = spd2
    elif spd2 < spd1:
        rows += 1
        pos1 = pos2
        spd1 = spd2
print(rows)
  • created

    Aug '18
  • last reply

    Aug '18
  • 16

    replies

  • 1.3k

    views

  • 7

    users

  • 3

    likes

  • 3

    links

Taka mała uwaga: nie pisz Python 3.7 bo spoj (jeszcze) takiego nie obsługuje więc jakim cudem miałbyś taki kod tutaj wrzucić?

Natomiast zadania jeszcze nie rozwiązałem, ale wydaje mi się (niech ktoś potwierdzi), że dla inputu

3
0 1
1 2
2 3
3 100
4 99
5 88
6 77

powinno być 4, a masz 1

Znów straciłem pół dnia z życia na szukanie błędu choć kod miałem dobry. Okazuje się że mrówki idą w odwrotnym kierunku niż normalnie powinny iść. Nie ustawiają się jak bolidy F1 na starcie tylko odwrotnie, od końca. Niestety autor zapomniał sprecyzować, a podany przykład jest mylący bo zgadza się w obu przypadkach…

Patrz: komentarze

Jak już wspominałem w innym temacie autorzy zadań nie mają profitów z tworzenia zadań na SPOJu / profity są infinitezymalne. Dotyczy to także odpowiadających i rozwiązujących . Trochę już porobiłeś na SPOJu więc spróbuj sobie kupić chleb za dumę ze stworzenia ciekawego zadania albo zapłacić za prąd rozwiązaniem trudnego problemu :wink:

Jeżeli interesują Cię doprecyzowane zadania na wysokim poziomie to faktycznie polski SPOJ wypada biednie. Osoby wypowiadające się na forum często jedynie liznęły programowanie gdzieś na studiach (albo jak ja na technologiach informacyjnych za 3 ECTS robiły prezentację multimedialną o sobie i wypełniały komórki Excela formułami typu SUMA - i tyle tego “programowania” było), niektórzy nawet nie są z zawodu programistami ani nawet informatykami (cokolwiek by to miało oznaczać). Wiele zadań ułożyli nie właściciele wielkich korpo i zasłużeni profesorowie z trzema medalami Fieldsa lub nagrodami Turinga a… nauczyciele informatyki i (ich) uczniowie. Może powinieneś przerzucić się na zadania z Potyczek Algorytmicznych, OI, OIG, Code Jam, … ?

Mówię serio i bez ironii - jeżeli frustrują Cię niedociągnięcia SPOJa to szkoda Twojego czasu na niego. W tym czasie możesz stworzyć własny projekt albo rozwalić zadania z profesjonalnego konkursu.

Ale @tarpauwatratar z Ciebie ziółko. Wiadomo każdy chce zarobić, ale żeby tak eliminując konkurencję wmawiając ludziom, że na spoju się nie zarabia?

Historia prawdziwa jest taka, że na spoju są reklamy i wiadomo są uczestnikom (oraz twórcom zadań) odpowiednio rozdzielane profity z nich (w jaki inny sposób zmusić ludzi do tworzenia zadań?) Wiadomo… nikt za darmo tego robić nie będzie. Wzór jest prosty:
(50/miejsce_w_rankingu)*100zł i wypłacane wszystkim od 50 miejsca wzwyż (już niedługo będę w puli!)

Teraz to wyjaśnia (i niech nikt nie przeczy) niedokładność opisów zadań. Twórca zadania jest też rozwiązującym i zależy mu na tym by jego zadanie rozwiązała jak najmniejsza liczba osób (najlepiej by tylko on je rozwiązał) więc podaje dwuznaczne inputy, niepełną treść i tym podobne przeszkadzacze.

Inni którzy osiągnęli już pułap 50. miejsca mają też metody w stylu właśnie kolegi powyżej - wmawiają innym, że na spoju się nie zarabia. Narbej na przykład rzuca takimi podpowiedziami aby tylko zmylić innych. Normalna zagrywka. To też można ufać tylko tym co nie mają jeszcze tak wysokiego miejsca (jak ja) lub którzy nie są tak chciwi (jak ja).

No ale cóż… albo zaakceptuje się ten stan rzeczy albo niestety spoj nie jest dla niego. Są inne strony gdzie twórcy zadań nie biorą za ich stworzenie procentu w postaci złamanego grosza, a mają normalną miesięczną wypłatę i tam zadania są dobrze rozpisane.

:slight_smile:

Abstrahując już od kwestii finansów to byłoby fajnie gdyby osoba która znalazła buga zgłosiła to komuś z administracji aby można było edytować treść. Ewentualnie napisać komentarz pod zadaniem, czy założyć temat na forum. Ale po co…Patrzę kto to rozwiązał to widać w kółko te same osoby m. in. narbej. Mógłby coś z tym zrobić ale po co niech się ludzie męczą…

Biorąc pod uwagę ilość nowych zadań i liczbę użytkowników wykruszających się przed i po 50 miejscu chyba jednak gdzieś płacą lepiej :frowning: albo częściej przelewają pieniądze wyliczone z tego wzoru, np. raz w miesiącu a nie w życiu :wink: Skoro juz wydałeś ten wielki sekret to chyba poszukam innego miejsca by wmawiać innym, że tu się nie zarabia. Miejsca gdzie płacą lepiej lub częściej :wink:

To jest byznes. Plebs taki jak my może korzystać ze SPOJa za darmo rozwiązując problemy Bajtogrodu, ale więksi (wielcy?) gracze używają SPOJa na potrzeby np. rekrutacji wykwalifikowanych specjalistów z konkretnych dziedzin IT. Z tego co pamiętam Sphere Research Labs to startup w Gdańsku mający największy popyt na swoje usługi w Indiach. Jak już oczekujesz interwencji adminów to na angielskim, a nie polskim SPOJu. Moderatorzy też mają co robić, np. jako wybitni algorytmicy dostawać (50/miejsce_w_rankingu)*100zł * czas_pracy_w_godzinach za kluczowe dla rozwoju różnych firm rozwiązania :wink:

Jedno i drugie można zrobić.

Trudno by go nie było biorąc pod uwagę jego pozycję w rankingu. Ale we wszystkich łatwych znajdziesz też np. mnie. A za niedługo może nawet siebie?

  1. nie wiem jak @narbej, ale ja to zadanie rozwiązałem na konkursie i potem tylko przekopiowałem kod. (50/miejsce_w_rankingu)*100zł to dla mnie za mało bym kopiował jeszcze wszystkie komentarze jak leci :wink:
  2. po to jest SPOJ by się na nim męczyć. Jak ktoś kiedyś zauważył - w pracy też nie zawsze wiadomo co trzeba zrobić i dlaczego. Taka wprawka :wink:
  3. jak zasugerowałem linkiem - gdzieś jest odpowiednie doprecyzowanie. Trzeba poszukać…

Wracając do treści zadania …

Pomijając fakt, że kierunek marszu mrówek jest przeciwny intuicji,
weźmy takie dwa przypadki:
3
0 1
1 1
2 1
oraz:
3
0 3
1 2
2 1

Według SPOJa odpowiedz na pierwszy to 3, a na drugi 1. A przecież każdy widzi, że w pierwszym przypadku mrówki idą z identyczną prędkością dokładnie jedna za drugą (bez żadnych przerw w pozycjach), więc tworzą 1 kolumnę, a nie 3 i nic się z biegiem czasu nie zmieni.
Dodatkowo, traktowanie ich jako oddzielnych kolumn czyni podawanie w tym zadaniu wartości pozycji zbędnym.

Ale to jeszcze nie koniec. Skoro już SPOJ twierdzi, że poprawna odpowiedź na pierwszy przypadek to 3 kolumny, to idąc konswekwentnie powiniem dać taką samą odpowiedź na drugi, bo tak naprawdę oba te zestawy opisują tę samą sytuację. Ponieważ według autora “szlak jest tak długi, że ho, ho”, to po pewnym czasie, w stanie ustalonym, w drugim przypadku będzie dokładnie tak jak w pierwszym. Mrówki z prędkościami 2 i 3 muszą zwolnić do prędkości tej z przodu i będzie wtedy:
0 1
1 1
2 1

Ja w pierwszym przypadku widzę 3 kolumny: jedną dla x = 0 + t, drugą dla x = 1 + t i trzecią dla x = 2 + t dla czasu t.
W drugim przypadku widzę jedną kolumnę od czasu w którym mrówki się spotkają

Hm, ja też to rozwiązałam, i to jak sie nie mylę w trakcie trwania fraktala bo dłuuuugiej nieobecnosci na spoju (chyba jeszcze stare forum było) , dałam radę :slightly_smiling_face: Też sie zastanawiałam w którym kierunku idą, ale w takich przypadkach po prostu daje oba rozwiazania i tyle. A może i po prostu rozrysowanie pomogło, nie pamietam,

Tak widziałem że rozwiązałaś jak przeglądałem za pierwszym razem najlepsze wyniki :wink:
Szczerze to powiem nawet mi przez myśl nie przeszło że mrówki mogą iść w kierunku jak autor to wymyślił. Dopiero po kilku godzinach szukania błędu na to wpadłem.

Czas szukania błędu szybko maleje w miarę rozwiązywania kolejnych zadań. Niestety nie wiem czy to faktycznie jakiś realny i istotny w życiu postęp czy po prostu przyzwyczajenie się do pewnych schematów :wink:

OK, teraz widzę jak odmiennie można rozumieć pojęcie kolumny mrówek. Dla mnie kolumna mrówek porzuszających się jednym szlakiem to był ciąg mrówek, których prędkość jest taka sama a między nimi nie ma “przerw” (już po czasie t), czyli coś takiego:

xxxxx - 1 kolumna
xx x xx - 3 kolumny

Jakoś sobie założyłem, że szlak może mieć szerokość tylko na 1 mrówkę, więc wtedy nie mogłoby być kilku mrówek na tej samej pozycji - bo raczej nie widziałem 10 mrówek idących obok siebie jednym szlakiem :slight_smile:

Teraz wyniki się zgadzają, ale skoro mrówki mogą iść obok siebie na tej samej pozycji, to tak naprawdę podawane pozycje są zbyteczne - do obliczeń wystarczą same prędkości.

No i trzeba wpaść na “prawidłowy” kierunek marszu…

Ale to jest szlak na szerokość 1 mrówki :wink: Po prostu idzie sobie jakaś wolna mrówka i z tyłu te co ją dogoniły mają zablokowaną drogą i robi się korek :wink: Numery pozycji kompletnie nie mają znaczenia. Nie wiem po co autor to podał… Może dla zmyły a może miał jakąś inną wizję rozwiązania gdzie mu to się przydało :wink: No i trzeba wpaść na prawidłowy kierunek marszu :wink: Jak ktoś wpadł to zrobił zadanie w kilka minut. Jak wybrał drugi kierunek to może nawet odpuścił sobie zdanie bo stwierdził że “nie umiem tego rozwiązać” bo wyniki niby prawidłowe a sędzie nie przyjmuje…

ja też. Ale mówimy o specyficznym gatunku mrówkus fraktalus :slight_smile:

Usunąłem jedyne miejsce w którym wykorzystywałem pozycje i… faktycznie. W sumie moja wina, że nie doczytałem fragmentu specyfikacji wejścia i rozpatrzyłem minimalnie trudniejszy problem.

Może z początku nie chciał by mrówki były posortowane po pozycjach.

Komentarz pod zadaniem:

Według mojej intuicji, mrówki ustawiły się na osi liczbowej, zobaczyły strzałkę [oś liczbowa była ze strzałką] więc po chwili wahania ruszyły w kierunku wskazywanym przez strzałkę. Dodatkowo, kilka mrówek stwierdziło, że w lewo są ujemne wartości i wszystkim mrówkom skojarzyło się to, nie mam pojęcia czemu, z marszem na biegun zimna, więc jednogłośnie postanowiły zgodnie maszerować we wiadomym kierunku! :wink:

To nie według SPOJ, tylko taką odpowiedź, na tamten test, daje twój program.
Mój daje dla takiego testu 3, ale to nie znaczy, że taki test jest w zestawie.

Problemy są po to, żeby się z nimi ludzie męczyli lub jak nie lubią to mogą unikać ale jak już pisałem wiele razy:
Zamiast narzekać i się męczyć, na SPOJ’u, ludzie którzy rozwiązali dużo zadań, mogą i powinni poprosić o uprawnienia problemsettera i po ich uzyskaniu, zacząć próbować robić własne, lepsze zadania a przestać narzekać…