Advertisement
Guest User

Sails fl0

a guest
Apr 22nd, 2018
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <algorithm>
  4. #include <fstream>
  5. #include <iterator>
  6.  
  7. #define MAXN 100000
  8.  
  9. using namespace std;
  10.  
  11. typedef pair<int,int> pi;
  12.  
  13. pi A[MAXN]; // ARRAY DI PAIR
  14.  
  15. int main(){
  16.  
  17.     ifstream cin("input.txt");
  18.  
  19.     int N,D,P;  // N PALI - N POSTI BANDIERE - N POSTI BANDIERE DA OCCUPARE AL IESIMO PALO
  20.  
  21.     cin >> N;
  22.  
  23.     long long int RIS = 0;  // RISULTATO
  24.  
  25.     int MAX_D = 0;  // LA LUNGHEZZA DEL PALO PIU LUNGO TROVATO FIN ORA
  26.  
  27.     for(int i=0;i<N;i++){
  28.  
  29.         cin >> D >> P;
  30.  
  31.         // SE TROVO UN PALO PIU LUNGO TRA QUELLI TROVATI FIN ORA
  32.         if(D>MAX_D){
  33.             // RIEMPIO L'ARRAY CON TUTTI I NUOVI POSTI
  34.             // CON RESISTENZA AL VENTO -1 E INDICE J CRESCENTE
  35.             for(int j=MAX_D;j<D;j++)A[j] = {-1,j};
  36.             MAX_D = D;  // ORA IL PALO PIU LUNGO E' QUESTO
  37.         }
  38.  
  39.         // ORDINO I POSTI DEL PALO
  40.         sort(A,A+MAX_D);
  41.  
  42.         // OCCUPO QUEI POSTI
  43.         for(int j=0,k = 0;j<P;j++,k++){
  44.             // MI CHIEDO SE IL MIO PALO E' SUFFICENTEMENTE LUNGO
  45.             if(A[k].second<D){
  46.                 // SE SI INCREMENTO LA POS DI QUELL INDICE
  47.                 A[k].first++;
  48.                 // E LO AGGIUNGO AL RISULTATO
  49.                 RIS += A[k].first;
  50.             }else{
  51.                 // ALTRIMENTI VUOL DIRE CHE LA BANDIERA CHE AVREI DOVUTO
  52.                 //AGGIUNGERE LA AGGIUNGERO' DA QUALCHE ALTRA PARTE...
  53.                 j--;
  54.             }
  55.         }
  56.     }
  57.  
  58.     cout << RIS;
  59.  
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement