kburnik

C++ - Zadatak ZIDARSKA - rješenje

Jan 3rd, 2013
67
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     Zadatak: Zidarska
  3.  
  4.     Datum: 2012-01-03
  5.  
  6.     Autor zadatka: Krešimir Malnar, HSIN
  7.        
  8.     Ponuđeno rješenje za OS:
  9.         Kristijan Burnik, udruga informatieara Božo Težak
  10.  
  11.     Složenost: o( T )
  12.  
  13.     Gmail: kristijanburnik
  14.  
  15. */
  16. #include <iostream>
  17. #include <cstdlib>
  18. #include <algorithm>
  19. #include <cmath>
  20. #include <vector>
  21. #include <set>
  22. #include <map>
  23. #include <queue>
  24.  
  25.  
  26. using namespace std;
  27.  
  28.  
  29. // prvi index u polju je sekunda u kojoj komad pjesme zavrsava sa downloadom
  30. const int ZAVRSETAK = 0;
  31.  
  32. // drugi index u polju je trajanje slusanja komada pjesme
  33. const int TRAJANJE = 1;
  34.  
  35. int main() {
  36.     int n;
  37.     scanf("%d", &n);
  38.    
  39.     // imamo ukupno n komada pjesme za preuzeti i poslusati
  40.     int komad[n][2];
  41.        
  42.     // koliko ce biti ukupno potrebno sekundi za preuzeti pjesmu?
  43.     int trajanje_downloada = 0;
  44.    
  45.     for (int i = 0; i < n; i++) {
  46.         int d,v;
  47.         scanf("%d%d",&d,&v);
  48.        
  49.         // ukupno trajanje downloada do trenutnog dijela
  50.         trajanje_downloada += v;
  51.        
  52.         // u kojoj sekundi zavrsava download ovog dijela?
  53.         komad[i][ZAVRSETAK] = trajanje_downloada;
  54.        
  55.         // koliko traje slusanje ovog dijela?
  56.         komad[i][TRAJANJE] = d;
  57.              
  58.     }
  59.    
  60.     // koliko je sekundi raspolozivo za slusanje do sada?
  61.     int raspolozivo = 0;
  62.    
  63.     // ako bismo slusali bez cekanja, koliko bi imali sekundi tisine?
  64.     int tisina = 0;
  65.  
  66.     // krecemo slusati od prvog dijela
  67.     int dio = 0;
  68.    
  69.     // prolazimo kroz sve sekunde downloadanja
  70.     for (int sekunda = 0; sekunda < trajanje_downloada; sekunda++) {
  71.        
  72.         if (sekunda >= komad[ dio ][ ZAVRSETAK ] ) {
  73.             // trenutna sekunda je veca/jednaka vremenu zavrsetka trenutno promatranog dijela
  74.             // ubrojimo da nam je sada raspoloziv pripadni broj sekundi za slusanje
  75.             raspolozivo += komad[ dio ][ TRAJANJE ];
  76.             // pomicemo se na iduci dio za download
  77.             dio++;
  78.         }
  79.  
  80.         if (raspolozivo > 0) {
  81.             // ako imamo raspolozivog vremena za slusanje, odslusat cemo jednu sekundu
  82.             raspolozivo--;
  83.         } else {
  84.             // ako nemamo nista za slusati, onda slusamo tisinu :-(
  85.             tisina++;
  86.         }
  87.     }
  88.    
  89.     // minimalno vrijeme potrebno za cekanje je zapravo jednaka ukupnoj tisini
  90.     // koju smo pretrpili :-D
  91.     printf("%d\n",tisina);
  92.  
  93.  
  94.    // system("pause");
  95.     return 0;
  96. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×