Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C++] Jak ma realizować sie program??

.michal 01 Lis 2011 09:19 1142 4
  • #1 01 Lis 2011 09:19
    .michal
    Poziom 13  

    Witam,
    Mam napisać dwa programy, każdy najlepiej na dwa sposoby, nie bardzo wiem tylko jak ma wyglądać kod jaki mają mieć schemat działania, może ktoś mi pomoże wymyślić w miarę szybko realizujący się kod?
    Oto polecenia:
    Problem 1 - „Przestępca 100-lecia”
    W pewnym mieście przestępczość kwitnie w najlepsze. Tamtejsze służby zupełnie sobie nie radzą z
    jej likwidacją. W końcu do władzy w mieście doszedł pewien obrotny polityk. Każde jego działanie
    jest przeprowadzone z rozmachem i ściśle zaplanowane (tak tak, bez porad speców od PR-u polityk
    nawet nie oddycha). Nowo wybrany prezydent postanowił od razu wziąć się do pracy (a
    przynajmniej chce, by takie było wrażenie wśród wyborców). Ponieważ u niego wszystko musi być
    „naj”, więc zlecił wytypowanie „przestępcy 100-lecia”, a więc osobnika, którego przestępstwa
    spowodowały najwięcej szkód w ostatnich 100 latach. Właśnie od niego prezydent chce zacząć
    likwidować przestępczość w mieście. I mało go interesuje, że dany osobnik mógł ich dokonywać
    np. 90 lat temu. Liczy się przecież efekt marketingowy i trzeba go szukać! Istnieje specjalna baza
    zawierająca informacje o przestępstwach i z jej pomocą należy zidentyfikować najgroźniejszego
    przestępcę. Zadanie to prezydent powierzył Tobie – kto wie może dzięki temu awansujesz i
    prezydent pozwoli ci spłacić jego długi zaciągnięte podczas (zapewne) nieudanej kadencji?
    Napisz program, który:
    -wczyta dane dotyczące przestępstw
    -wyznaczy najgroźniejszego przestępcę
    Wejście:
    W pierwszej linii wejścia jest liczba całkowita n (1<=n<=10^6) przestępstw w bazie danych. W
    kolejnych n wierszach występują pary liczb całkowitych. Pierwsza z nich oznacza identyfikator
    przestępcy (zakres 1-10^18), a druga oznacza szkodliwość przestępstwa (w skali od 1 do 10).
    Wyjście:
    W jedynej linii wyjścia mają się pojawić dwie liczby: identyfikator najgroźniejszego przestępcy i
    sumaryczna szkodliwość czynów, których dokonał.
    Przykład:
    Wejście:
    5 //Dane o 5 przestępstwach
    1234567890 3 //Identyfikator przestępcy i szkodliwość czynu
    859 2 ...
    13 5
    1234567890 4
    13 1
    Wyjście:
    1234567890 7 //Przestępca 1234567890 jest najgroźniejszy, a jego szkodliwość to 7
    ------

    Problem 1 – Biznesmen
    Pewien biznesmen jest bardzo zapracowany. Pracuje całą dobę i o każdej porze ma sprawy do
    załatwienia. Za namową żony opracował on jednak kompromis - będzie poświęcał jej kilka godzin
    czasu na dobę – w formie jednego spotkania. Spróbuje on wygospodarować ten czas gdzieś
    pomiędzy kolejnymi ważnymi interesami. Zaproponować algorytm, który znając rozkład
    biznesmena danego dnia wyznaczy tak godzinę spotkania z żoną, by przepadło jemu jak najmniej
    ważnych spraw.
    Wejście:
    W pierwszej linii wejścia podana jest liczba terminów n (1<n<1000) oraz liczba g godzin
    poświęconych żonie (1<=g<=10). W kolejnych n liniach są podane w porządku rosnącym czasy
    (format GG:MM) ważnych spraw biznesmena. Zakładamy, że biznesmen potrafi te sprawy załatwić
    w czasie pimijalnie małym.
    Wyjście:
    W jedynej linii wyjścia podany jest czas rozpoczęcia spotkania z żoną oraz liczba spraw, która w
    czasie spotkania przepadnie biznesmenowi. Wynik ma być tak dobrany, by biznesmenowi przepadło
    jak najmniej spraw.
    Przykład:
    Wejście:
    5 6 //5 spraw, 6-godzinne spotkanie z żoną
    1:30
    6:20
    12:15
    17:55
    23:55
    Wyjście:
    0 17:55 //spotkanie z żoną w godzinach 17:55-23:55 i nie przepadnie w międzyczasie żadna sprawa

    Nie oczekuje kodu tylko słownego opisu działania programu ponieważ sam nie bardzo wiem jak to ma wyglądać (mam nadzieję chwilowo :P)
    Pozdrawiam
    Michał

    0 4
  • #2 01 Lis 2011 10:04
    Dżyszla
    Poziom 42  

    1. Proponuję statyczną 106-elementową tablicę rekordów. Do niej można wczytać wszystkie dane, a wczytując - przeszukać pod kątem już występowania identyfikatora i dodać do szkodliwości wczytaną liczbę.

    2. Wyznacz różnice czasów. Następnie sumuj po kolei (czyli 1..n, 2..n, 3..n) do momentu, aż osiągniesz założoną liczbę godzin. Do każdego początku przypisz ilość sumowań (bez pierwszej wartości). Znajdź najmniejszą liczbę. Wydrukuj godzinę odpowiadającą indeksowi najmniejszej liczby sumowań.
    Dla przykładowego wejścia:
    Różnice:
    1. 4:50
    2. 5:55
    3. 5:40
    4. 6:00
    Szukanie 6h:
    1. 1 (1+2)
    2. 1 (2+3)
    3. 1 (3+4)
    4. 0 (4)


    Zadania pachną mi jakąś olimpiadą, więc pewnie i gotowce znajdą się w sieci...

    0
  • #3 01 Lis 2011 13:04
    .michal
    Poziom 13  

    przepraszam kopiowałem z pdf'a i nie zauważyłem powstałego błędu
    n=<1,10^6> a identyfikator od 1 do 10^18
    i właśnie nie wiem do końca jak operować na takich dużych liczbach

    0
  • #4 01 Lis 2011 17:34
    Dżyszla
    Poziom 42  

    A to już zależy od użytego kompilatora. Jeśli to środowisko Windows, to bez problemu możesz utworzyć tablicę dynamiczną o wskazanej wielkości. Identyfikator potraktuj z kolei jako ciąg znakowy, a nie jako liczbę ;) Chyba, że masz kompilator wspierający 64-bitowe liczby. Wówczas 10^18 to nie tak dużo wcale ;)

    0
  • #5 01 Lis 2011 18:11
    .michal
    Poziom 13  

    dziękuje za objaśnienia, jak coś napisze to postaram się wstawić do poprawy błędów chociaż na razie to czarno widzę;P

    0