25 / 25
Jan 2017

Great!!!

I (ZZZ) have never thought it's possible for Python.

14.62 seconds after I substituted the condition for if not (int(line) % k):, but probably just a random glitch...

Anyway, the real bottleneck in this case appears to have been the arithmetic and raw_input() (an iterator over stdin was much faster, as you can see). So with correct Psyco optimizing (which means putting your code in a function, as Psyco doesn't optimize module-level code), it worked!

BTW, I find it amusing that you now refer to yourself as "I (ZZZ)" wink . Maybe soon you'll start refering to yourself as "We the king" smiley ?

hahaha hehehehehe hahaha smile

it's one of my innocent hobbies - to make people smiling... smile

8 months later

The test has a maximum of 8 seconds, and it specifies you must handle at least 1 megabyte / second, so we can assume that we only have to process 8 megabyte of data or so. You can use up to 64 megabyte per execution, so you can definitely read the whole problem into memory.

Other than the people who got 0.12 seconds (!!!), I have the fastest time right now. I read the entire input in, use split("\n"), and then check each line with a simple for loop. This is with psyco - I don't think it is possible without.

2 years later

Wielkie dzieki - nie wpadlem, ze moze to byc jakis powazniejszy problem niz tylko jakis wymysl na spoju stuck_out_tongue Rzeczywiscie jest sporo artykulow na ten temat, ktore bardzo mi pomogly smile

1 year later

Witam.
Mój kod wygląda następująco. Cały czas wyświetla mi, że przekroczono limit czasu. Dlaczego? Co mogę zrobić, żeby wyeliminować ten błąd?

-- kod usunięty --

No tak, dziękuję, ja chyba jestem ślepa smile Nie zwróciłam uwagi, bo cały czas zwracało mi dobry wynik.

5 months later

Ja się z tym zadaniem już męczę kilka godzin, próbowałem chyba wszystkiego, przykłady z zadania przechodzą, a wciąż błędny wynik na spoj... Może ktoś wie co tu może być źle?

//kod zjadl troll :P (AC)

Nie wiem, czy jest taki test, ale mój AC różni się od Twojego WA tym, że dla braku danych wypisuje:

-10:||
 -9:||
 -8:||
 -7:||
 -6:||
 -5:||
 -4:||
 -3:||
 -2:||
 -1:||
  0:||
  1:||
  2:||
  3:||
  4:||
  5:||
  6:||
  7:||
  8:||
  9:||
 10:||

a Twój tylko pustą linię.
Sprawdź, czy po zmianie tego zaliczy Ci program - jak nie to dalej poszukam błędu.

jesteś pewien, że dokładnie to wypisujesz? przecież miało być "liczba na 4 polach" czyli

 -10:|| //nie pokazuje spacji przed -10, nie wiem dlaczego
  -9:||
//itd.

u siebie w programie dodałem jedną spację więcej przed wyświetlaniem liczby, ale nadal błędna odpowiedź
ustawiłem, żeby wyświetlało pusty histogram w przypadku braku danych, nadal błędna odpowiedź ;/
przeglądam ten kod już 1000 razy, porównuję z przykładowym kodem (tym w pascalu z zadania) i nie mogę znaleźć jakiejkolwiek różnicy confused
próbowałem już zaokrąglać 0.5 zarówno w górę, jak i w dół, też brak efektów frowning
mam 54 AC z łatwych zadań, a to pierwsze, z którym tak się męczę, mimo tego, że jest proste

Spacje przed pierwszymi liczbami są nieistotne - może ich w ogóle nie być (sprawdziłem).
Pokaż nowy kod, to poszukam błędu.

I nie martw się, też nie mam wszystkich łatwych, a mam niektóre średnie zadania - to, w której kategorii są zadania, nie oznacza, że są faktycznie łatwe, średnie czy trudne. To autor zadania stwierdza jaki jest wg poziom trudności. Tak więc rób zadania wg możliwości, a nie kategorii (nic na siłę). smile

działa...

int max=0; //wcześniej było max = n[0], jak tą linijkę zmieniałem
for(int i=1; i<21; i++) //zapomniałem tu ustawić i=0
if(n[i] > max) max = n[i];

no i po raz n-ty udowodniłem sobie, że najwięcej czasu w programowaniu tracę na poprawianiu takich błędów... wink
co do poziomu trudności to się zgodzę, aczkolwiek postanowiłem sobie robić po kolei, najpierw łatwe, potem średnie, potem trudne, na koniec challenge (aczkolwiek jedno challenge sobie rozwiązałem już stuck_out_tongue)

2 years later

Dzięki wielkie. Teraz działa. Dopiero zaczynam naukę z algorytmami i gdy zobaczyłem tam ograniczenie s <= 10000 to od razu dałem zmienne integer, nie podstawiając do wzoru czy przekroczy zakres.

1 year later
  1. Czytałeś regulamin? Jest tam napisane, że lepiej zrobić tablicę z zapasem, a nie na styk.
  2. Tu nawet owa tablica nie jest potrzebna, Wczytujesz jedną liczbę, liczysz, wypisujesz wynik na standardowe wyjście, a nie do tablicy, wczytujesz kolejną, liczysz dla niej... (też podejrzewam, że to jest w regulaminie - poradniku).

Tak czytałem, robiłem to już takim sposobem bez tablicy, cały czas to samo... Gdyby tablica nie mieściła wszystkiego czy coś w ten deseń to miałbym NZEC, już to sprawdzałem na innym programie ;/

@murzynas
Oj chyba przyjdzie ci nauczyć się regulaminu na pamięć wink
Czy nie napisano w regulaminie, że trzeba też uważnie czytać komentarze pod zadaniem?
Czy nie napisano w komentarzu pod zadaniem, że są problemy NZEC z tym zadaniem w javie i czym jest to powodowane?
Czy nie można wpisać w google: "jak obciąć/uciąć/zlikwidować spacje na końcu stringu w javie"?
Czy jak wyskoczy trim() to nie można go dopisać do: ......(x.readline().trim()) ...... i sprawdzić co się stanie? wink
Czy nie można potem powyrzucać te wszystkie niepotrzebne i nadmiarowe traje i catche i sprawdzić co się stanie?

Przeglądnąłem te komentarze stuck_out_tongue, bo już przy jednym z zadań okazały się niezwykle pomocne, jednakże nie sądziłem, że może być u mnie problem z jakimikolwiek spacjami open_mouth . Nie byłem świadom tych spacji przed i po znakach w Stringu, jak też nie znałem funkcji trim(). To jednak może rozwiązać wiele moich przyszłych problemów xd, coś tak myślałem, że odpowiedź kryje się w jednym z bardziej oczywistych miejsc. Dzięki i wybaczcie, że tego wcześniej nie odnalazłem, ale klnę się że cały dzień szukałem i nie sądziłem, że mogą to być spacje xD!

11 months later

Dla potomnych, wypociny prawie 3h głupiego poprawiania kodu... smiley
[bbone=CPP,2295]
while(cin >> zmienna){
if(cin.eof()) break;
...
}
...
[/bbone]
Takie wczytywanie może sprawić dużo problemów, w debugerze wyniki były poprawne... Ale co innego w konsoli.
Zalecam używanie tych poniżej.
[bbone=CPP,2295]
while(scanf("%s", &zmienna) != EOF){
...
}
...
[/bbone]
[bbone=CPP,2295]
while(true){
if(cin.eof()) break;
cin >> zmienna;
...
}
...
[/bbone]

1 year later

Zechciał by ktoś z was zerknąć na moje wypociny i pomóc znaleźć błąd? Niestety postępowanie krok po kroku z instrukcją i przeczytanie komentarzy w tym temacie niewiele mi pomogło...

Obecna wersja:
http://ideone.com/78DsyG2