

![]() |
![]() |
|
|||||||
![]() |
![]() |
| programowanie języki, projekty, pomoc, oprócz html, php, js |
|
|
|
LinkBack | Narzędzia wątku | Przeszukaj ten temat | Wygląd |
![]() |
![]() |
|
|||
|
Mam problem z zadaniem
Oto treść: Słonie Limit pamięci: 64 MB W Bajtockim Zoo ma się za chwilę odbyć parada, w której uczestniczyć będą wszystkie znajdujące się w nim słonie. Pracownicy zoo zachęcili już zwierzęta do ustawienia się w jednym rzędzie, gdyż zgodnie z zarządzeniem dyrektora zoo taka powinna być początkowa figura parady. Niestety, na miejsce przybył sam dyrektor i zupełnie nie spodobała mu się wybrana przez pracowników kolejność słoni. Dyrektor zaproponował kolejność, w której według niego zwierzęta będą się najlepiej prezentować, i wydał pracownikom polecenie poprzestawiania słoni zgodnie z tą propozycją. Aby uniknąć nadmiernego chaosu tuż przed paradą, pracownicy postanowili przestawiać słonie, zamieniając miejscami kolejno pewne pary słoni. Przestawiane zwierzęta nie muszą sąsiadować ze sobą w rzędzie. Wysiłek potrzebny do nakłonienia słonia do ruszenia się z miejsca jest wprost proporcjonalny do jego masy, a zatem wysiłek związany z zamianą miejscami dwóch słoni o masach oraz można oszacować przez . Jakim minimalnym wysiłkiem pracownicy mogą poprzestawiać słonie tak, aby usatysfakcjonować dyrektora? Napisz program, który: * wczyta ze standardowego wejścia masy wszystkich słoni z zoo oraz aktualną i docelową kolejność słoni w rzędzie, * wyznaczy taki sposób poprzestawiania słoni, który prowadzi od kolejności początkowej do docelowej i minimalizuje sumę wysiłków związanych ze wszystkimi wykonanymi zamianami pozycji słoni, * wypisze sumę wartości tych wysiłków na standardowe wyjście. Wejście Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą (), oznaczającą liczbę słoni w Bajtockim Zoo. Dla uproszczenia zakładamy, że słonie są ponumerowane od do . Drugi wiersz zawiera liczb całkowitych ( dla ), pooddzielanych pojedynczymi odstępami i oznaczających masy poszczególnych słoni (wyrażone w kilogramach). Trzeci wiersz wejścia zawiera różnych liczb całkowitych (), pooddzielanych pojedynczymi odstępami i oznaczających numery kolejnych słoni w aktualnym ustawieniu. Czwarty wiersz zawiera różnych liczb całkowitych (), pooddzielanych pojedynczymi odstępami i oznaczających numery kolejnych słoni w ustawieniu proponowanym przez dyrektora zoo. Możesz założyć, że ustawienia reprezentowane przez ciągi oraz są różne. Wyjście Pierwszy i jedyny wiersz wyjścia powinien zawierać jedną liczbę całkowitą, oznaczającą minimalny łączny wysiłek związany z poprzestawianiem słoni, w wyniku którego z ustawienia reprezentowanego przez uzyskuje się ustawienie . Przykład Dla danych wejściowych: 6 2400 2000 1200 2400 1600 4000 1 4 5 3 6 2 5 3 2 4 6 1 poprawną odpowiedzią jest: 11200 Jeden z najlepszych sposobów poprzestawiania słoni uzyskujemy, zamieniając miejscami kolejno pary słoni: * 2 i 5 - wysiłek związany z zamianą to , a uzyskane ustawienie to 1 4 2 3 6 5, * 3 i 4 - wysiłek to , a uzyskane ustawienie to 1 3 2 4 6 5, * 1 i 5 - wysiłek to , a uzyskane ustawienie to 5 3 2 4 6 1, czyli ustawienie docelowe. A oto mój kod: Kod:
#include<stdio.h>
int main ()
{
unsigned long int liczba_sloni;
unsigned long int rozwiazanie=0;
scanf("%u",&liczba_sloni);
int *tablica = new int[liczba_sloni];
for(int slon=1;slon<=liczba_sloni;++slon)
{
scanf("%u",&tablica[slon]);
}
int *ptablica = new int[liczba_sloni];
for(int slon=1;slon<=liczba_sloni;++slon)
{
scanf("%u",&ptablica[slon]);
}
int *ktablica = new int[liczba_sloni];
for(int slon=1;slon<=liczba_sloni;++slon)
{
scanf("%u",&ktablica[slon]);
}
int buffor;
for(int slon=1;slon<=liczba_sloni;++slon)
{
for(int xslon=1;xslon<=liczba_sloni;++xslon)
{
if ((ptablica[slon]==ktablica[xslon])&&(slon!=xslon))
{
rozwiazanie+=(tablica[ptablica[xslon]]+tablica[ptablica[slon]]);
buffor=ptablica[slon];
ptablica[slon]=ptablica[xslon];
ptablica[xslon]=buffor;
}
}
}
printf("%u",rozwiazanie);
return 0;
}
pytanie brzmi co jest źle Proszę o pomoc bo ja siedze już 3 dzień i dalej nic nie wymysliłem |
![]() |
![]() |
![]() |
![]() |
|
|||
|
Wejdź na SIO i zobacz sobie wzorcówki udostępnione przez uczestników olimpiady, niektóre są dobrze wykomentowane to sobie porównasz algorytm, bo tak z kodu wykminiać co ty tam dokładnie robisz to chyba nikomu się nie będzie chciało
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
|||
|
http://www.wklejto.pl/42466
Masz wzorcówke, nie jest ona moja ale skoro ją udostępniono to chyba mogę ją "podać dalej" jeśli nie to z góry przepraszam i proszę o usunięcie posta |
![]() |
![]() |
|
| Tagi |
| c++ oi zadanie problem |
| Narzędzia wątku | Przeszukaj ten temat |
| Wygląd | |
|
|
Podobne wątki
|
||||
| Temat | Autor wątku | Forum | Odpowiedzi | Ostatni post/autor |
| PROBLEM ! Prosze o pomoc ! | Serusael | Nintendo | 1 | 18.05.2008 10:17 |
| Just cause problem!! Prosze o pomoc!! | najazeru | problemy techniczne | 2 | 24.10.2006 08:56 |
| PROBLEM!!! Proszę o pomoc | P@trol | sprzęt | 2 | 18.05.2006 18:35 |
| Problem prosze o pomoc... | masta1990 | technika p2p & p2m | 1 | 07.08.2005 00:57 |
| Wszystkie czasy w strefie GMT +2. Teraz jest 20:28. |

