Dzień dobry, ja tutaj z pytaniem odnośnie treści bo nie wiem czy ją rozumiem.
więc od najsilniejszego idziemy od 'z' do 'a', następnie wiadomo, że 'a' > 'A'.
Skąd wiadomo czy 'a' > 'Z'? albo 'a'<'Z', skoro małe 'z' jest > 'a' to duże 'Z' > 'A' ?
Dlaczego nie jest treść sprecyzowana?
Jakby było napisany 'a' > 'Z' to by wszystko było jasne, (bo zakładamy, że 'Z' > 'A')
Z przykładu i treści zadania.
Przyznaję, że można było doprecyzować specyfikację zadania. Niemniej ja dostałem AC za pierwszym razem, a opierałem się wyłącznie na treści zadania. 305 AC też o czymś świadczy więc nie jest źle.
Nie byłoby jasne. Ktoś zacząłby się zastanawiać, dlaczego w przykładzie są ciągi literek typu: "klKKnNLlNL", skoro w treści opisano jedynie literki a, A, z oraz Z.
A teraz wisienka na torcie
Bo nie jest
Swojego czasu też męczyłem się z jakimś zadaniem, którego nie rozumiałem. Oczywiście część zadań ma to do siebie, że ich treść dociera do ludzi dopiero po otrzymaniu baaaardzo dokładnych wskazówek, niemalże gotowca - kwestia tak zwanego "nie nadawania na tych samych falach". To zadanie jednak do nich się nie zaliczało - po rozwiązaniu go dalej uważałem, że treść wprowadza w błąd. Swoje zastrzeżenia przedstawiłem na forum, gdzie nikt nie zaprzeczał moim tezom, ale mimo to ludzie (jak pamiętam głównie @narbej) stawali po stronie autora i uważali moje podejście za czepialstwo. Oczywiście nie przemawiała do mnie taka argumentacja...
Aż tu nagle ktoś (niestety nie pamiętam kto) na moje twierdzenie, iż specyfikacja powinna być dokładna, odpowiedział coś w rodzaju (przekazuję sens wypowiedzi, a nie słowa): "Powinna, ale w praktyce zawsze specyfikacja nie jest dokładna, stanowi pewne przybliżenie i trzeba się domyślać co autor zadania/klient/prowadzący laboratoria ma na myśli mając jedynie pewien ramowy szkic oraz modyfikować specyfikację adekwatnie do napotkanych trudności programistycznych i humorów autora zadania/klienta/prowadzącego".
Radzę zapamiętać i kombinować aż do skutku przy każdym kontakcie z programowaniem, nawet na SPOJu
Otrzymuję TLE (przekroczono limit czasu).
Na początku zrobiłem na cin, cout i faktycznie - mogło przekroczyć limit, ale gdy przeszedłem na scanf i printf i nadal wyświetla, że przekroczono... no to już więcej nie zrobię.
Co jest nie tak?
kodzik:<=Kiedyś był tu ze wskaźnikami =>
zadanie: http://pl.spoj.com/problems/AL_01_02/14
PS
Czy to przez to, że wskaźniki są za wolne?
Najpierw zrób zadanie, a nie z góry obstawiaj
Nie tylko w języku c/c++ napis 'a' ma konkretne znaczenie, dla każdego trochę bardziej zaawansowanego [kumatego] programisty oczywiste.
Wystarczy[łoby] mieć tablicę kodów ASCII pod ręką i od czasu do czasu do niej zaglądnąć. i tylko tyle
Zgoda, ale jest też 618 [na razie ] TLE i tylko 122 osób, które mogły wysłać więcej niż jedno AC - stąd te 305. W końcu zadanie jest nie bez powodu w kategorii zadań średnich, a nie łatwych.
Też zrobiłem na cin, cout + ios::sync_with_stdio(0) ===> AC czas 1.26
90 linijek to kodzik? [ok 20 linijek kodziku w zupełności wystarczyłoby]
Dlatego trudno to analizować.
Niee, to przez programistę, bo to od niego zależy co z tym [ze wskaźnikami] zrobi.
PS
Musisz przemyśleć i skrócić kod - nic tu raczej nie da się zrobić i wymyśleć. Przy okazji przemyśl taką swoją dziwną konstrukcję:
if(p)
{
while(p)
{
...
Oczywiście wątpię, czy jej poprawienie spowoduje cudowne nie TLE
PS 2
Nie rozumiem też twojego sposobu pisania main(). Przecież wszyscy wiedzą, że prawidłowo [ale też bez wpływu na TLE] powinno się pisać:
int main(){
starter();
}
i tyle , bez zbędnych śmieci w main().
Yyyy... to będę chamem. A co z x? A < Z < a < z .... a x? x < A < Z < a < z czy A < x < Z < a czy...?
Jak wielu.
Widocznie zły algorytm...
Yyyy... jestem wróżbitą
Tak i nie, a ściślej: dzięki @narbej za odpowiedź
Mógłbym znowu wykazać się "czepialstwem" i podać przykłady zadań łatwych z dużo gorszymi wynikami, ale oczywiscie rozumiem sens wypowiedzi i zgadzam się z nim.
W każdym razie w matematyce zaprzeczeniem kwantyfikatora ogólnego jest kwantyfikator szczegółowy. A w tym przypadku nie tylko istnieje osoba, która to zrozumiała, ale aż 305 osób ogarnęło to zadanie Nota bene jedno z moich ulubionych
PS
@i6g7g6y5 jeżeli nie masz pomysłu to ewentualnie możesz przeszukać moje ostatnie posty... pisałem komuś o zadaniu ze zwierzakami ustawiającymi się w kolejce Bardzo możliwe, że padło tam słowo kluczowe do uzyskania AC
(ale nie gwarantuję!)
Nie miałeś tłumaczyć, ale przemyśleć i przestać stosować.
Powtórzę
Zamiast:
if(p)
while(p)
wystarczy aż nadto
samo
while(p)
.
.
Warto jeszcze, żeby jedna z tych ogarniających osób [dużo mniej niż 305], nauczyła się prawidłowo czytać i interpretować dane - wystarczy tylko przeczytać uważnie nagłówki rubryk no i niestety trochę pomyśleć.
to zadanie jest łatwe, pomijając fakt, że jego nazwa kieruje znaczna część rozwiązujących w złą stronę
to że zadziwiająco mało osób rozwiązało to zadanie, to raczej spowodowane jest tym, że już wtedy spoj miał znacznie mniejszą popularność niż na początku działalności - ale i tak zadanie ma znacznie więcej rozwiązań, niż inne średnie zadania z tego okresu
Jest średnie . Tzn jest w kategorii zadań o średniej trudności.
W czasie umieszczania zadania na SPOJu, nie było jeszcze statystyk i autor i @admini musieli "oprzeć" się na swoim doświadczeniu i praktyce. I jest tak za każdym razem, przy wprowadzaniu każdego nowego zadania na SPOJ'a. Można ewentualnie potem bawić się w przenoszenie zadań z jednej do drugiej kategorii ale ani ja nie jestem zwolennikiem takich zabaw, ani sama ilość ozób z AC nie jest miernikiem trudności [łatwości] zadania.
PS
Dla zadań z algoligi, w czasie ich wprowadzania na SPOJa, pewnym przybliżeniem są statystyki na algolidze, skąd pochodzi zadanie, ale tylko przybliżeniem.
PS 2
Dla osoby/osób, które rozwiązały to zadanie, jest ono proste i łatwe, Jednak dla ciągle zmagających się z nim nie.
PS 3
To, że w ogóle poruszyłem problem ilości osób, które rozwiązały zadanie, wynikło tylko z chęci zwrócenia uwagi na ewidentny błąd przedmówcy w interpretacji statystyk
Wskazówki!
- To nie pierwszy twój post na forum z pytaniem czy podpowiedzią więc powinieneś już chyba wiedzieć jak wklejać kod?
- Podpowiadając, warto samemu sprawdzić, bo możemy niechcący napisać głupotę.
- Tu tablicy używasz do wczytania więc nie trzeba jej wcześniej zerować.
- konstrukcja tab[101] = {0} jest [to moje przypuszczenie] równoważna np pętli:
while(i--) tab[i] = 0;
AD 2
spacje na cout robimy poprzez: cout << ' ' ; lub cout << " ";
AD 4
Więc albo zrezygnuj z zerowania [={0}], albo deklaruj poza pętlą.
PS
Zrobiłbym trochę inaczej. Zrezygnował z kopiowania, a zostawił tylko wstawianie zera. Dodatkowa zmienna na pamiętanie ostatniego-poprzedniego zwierzaka.
Ad 1.
Nie rozumiem o co chodzi, przecież kod jest ładnie wklejony za pomocą ctrl+shift+c
Ad 4.
konstrukcja tab[101]={0} nie jest wcale równoważne pętli, gdyż np. zapis
tab[101] = {4} ustawi pierwszy element tablicy na wartość 4 natomiast pozostałe elementy przyjmą wartość 0.
Dlatego tylko i wyłącznie do zerowania tablicy używam zapisu = {0}.
(Możesz to łatwo sprawdzić)