AlenAntonelli

Boredom 455/A

Oct 19th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. /// https://trello.com/c/AW7GWhYJ/6-problem-455a-codeforces
  2. /// http://codeforces.com/contest/455/problem/A
  3. #include <iostream>
  4. #include <vector>
  5. #include <algorithm>
  6. #define ll long long
  7. using namespace std;
  8.  
  9. vector <ll> t;
  10. ll calcular()
  11. {
  12.     ll Uso = 0, New_Uso;
  13.     ll Dejo = 0, New_Dejo;
  14.    
  15.     for (int i=0; i<t.size(); i++)
  16.     {
  17.         New_Uso = Dejo + t[i]; ///si uso ese numero, es porque lo sume a lo que no habia usado
  18.         New_Dejo = max(Uso, Dejo); ///si no uso ese numero, me quedo con el mejor resultado anterior
  19.        
  20.         Uso = New_Uso;
  21.         Dejo = New_Dejo;
  22.     }
  23.     t.clear();
  24.    
  25.     return max(Uso, Dejo);
  26. }
  27.  
  28. int main()
  29. {
  30.     int n;
  31.     cin>>n;
  32.    
  33.     vector <int> v (n);
  34.     for (int i=0; i<n; i++)
  35.         cin>>v[i];
  36.        
  37.     sort ( v.begin(), v.end() );
  38.     reverse ( v.begin(), v.end() );
  39.        
  40.     t.push_back( v[0] );
  41.    
  42.     ll resultado = 0;
  43.     int num, ant;
  44.    
  45.     for (int i=1; i<n; i++)
  46.     {
  47.         num = v[i];
  48.         ant = v[i-1];
  49.        
  50.         if (ant == num) ///si tengo dos numeros iguales seguidos, aumento el sumador de ese numero
  51.             t.back()+=num;
  52.         else  //y si tengo dos numeros consecutivos distintos...
  53.         {
  54.             if (ant != num+1) ///si uno no es el siguiente del otro, entonces comparo la secuencia hasta ahí
  55.                 resultado += calcular();
  56.                
  57.             t.push_back(num); ///en ambos casos, añado un contador de ese nuevo numero
  58.         }
  59.     }
  60.     resultado += calcular();
  61.     cout<<resultado;
  62.    
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment