GastonFontenla

N3P2 - Librero (Solución sin map)

Sep 1st, 2019
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define MOD 1000000007
  6.  
  7. vector <int> librero(vector <int> bases, vector <int> libros, vector <int> &orden)
  8. {
  9.     vector <pair<int, int> > parBases(bases.size()), parLibros(libros.size());
  10.  
  11.     for(int i=0; i<bases.size(); i++)
  12.     {
  13.         parBases[i] = {bases[i], i};
  14.         parLibros[i] = {libros[i], i};
  15.     }
  16.  
  17.     sort(parBases.begin(), parBases.end());
  18.     sort(parLibros.rbegin(), parLibros.rend());
  19.  
  20.     int altura = parBases[0].first + parLibros[0].first;
  21.  
  22.     for(int i=1; i<parBases.size(); i++)
  23.         if(parBases[i].first + parLibros[i].first != altura)
  24.             return {-1, 0};
  25.  
  26.     orden = vector <int> (bases.size());
  27.  
  28.     for(int i=0; i<parBases.size(); i++)
  29.         orden[parBases[i].second] = parLibros[i].second+1;
  30.  
  31.     long long res = 1;
  32.     long long it = 1;
  33.    
  34.     for(int i=1; i<parLibros.size(); i++)
  35.     {
  36.         if(parLibros[i].first == parLibros[i-1].first)
  37.             it++;
  38.         else
  39.             it = 1;
  40.         res = res*it%MOD;
  41.     }
  42.  
  43.     return {altura, res};
  44. }
Advertisement
Add Comment
Please, Sign In to add comment