Advertisement
kburnik

C++ - Zadatak ZIDARSKA - rješenje

Jan 3rd, 2013
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.47 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement