Advertisement
informaticage

OIS Plugs soluzione non ottimizzata

Jan 28th, 2020
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.82 KB | None | 0 0
  1. #include <iostream>
  2. #include <map>
  3. #include <vector>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. struct Computer {
  9.     int potenza;
  10.     string presa;
  11. };
  12.  
  13. bool sortByFlops ( Computer p1, Computer p2 ) {
  14.     return p1.potenza > p2.potenza;
  15. }
  16.  
  17. int main( void ) {
  18.     int numeroComputer, numeroPrese;
  19.     cin >> numeroComputer >> numeroPrese;
  20.     vector <Computer> computers ( numeroComputer );
  21.  
  22.     for ( int i = 0; i < numeroComputer; i++ )
  23.         cin >> computers [ i ].potenza;
  24.  
  25.     for ( int i = 0; i < numeroComputer; i++ )
  26.         cin >> computers [ i ].presa;
  27.  
  28.     map <string, int> preseDisponibili;
  29.  
  30.     for ( int i = 0; i < numeroPrese; i++ ) {
  31.         string presaCorrente;
  32.         cin >> presaCorrente;
  33.         preseDisponibili [ presaCorrente ] ++;
  34.     }
  35.  
  36.     sort( computers.begin(), computers.end(), sortByFlops );
  37.  
  38.     /// Usiamo prima le L10
  39.     int it = 0;
  40.     int potenza = 0;
  41.  
  42.     while ( preseDisponibili["L10"] > 0 && it < computers.size() ) {
  43.         if ( computers[it].presa == "L10" ) {
  44.             preseDisponibili["L10"] --;
  45.  
  46.             potenza += computers[it].potenza;
  47.             computers[it].potenza = 0;
  48.         }
  49.         it ++;
  50.     }
  51.  
  52.     it = 0;
  53.     while ( preseDisponibili["L16"] > 0 && it < computers.size() ) {
  54.         if ( computers[it].presa == "L16" ) {
  55.             preseDisponibili["L16"] --;
  56.             potenza += computers[it].potenza;
  57.             computers[it].potenza = 0;
  58.         }
  59.         it ++;
  60.     }
  61.  
  62.     it = 0;
  63.     while ( preseDisponibili["bipasso"] > 0 && it < computers.size() ) {
  64.         if ( computers[it].potenza != 0 ) {
  65.             preseDisponibili["bipasso"] --;
  66.             potenza += computers[it].potenza;
  67.             computers[it].potenza = 0;
  68.         }
  69.         it ++;
  70.     }
  71.  
  72.     cout << potenza << endl;
  73.     return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement