MuradHacci

E-Olymp: P_3937 (Need edit)

Feb 21st, 2020
82
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * File:   main.cpp
  3.  * Author: MURAD HAJIYEV
  4.  * Problem: https://www.e-olymp.com/en/problems/3937
  5.  * Created on February 22, 2020, 12:42 AM
  6.  */
  7.  
  8. #include <bits/stdc++.h>
  9. using namespace std;
  10. typedef unsigned long long int ll;
  11.  
  12. ll calculate(ll n){
  13.    
  14.     ll sum = 10;
  15.    
  16.     while(sum > 9){
  17.        
  18.         sum = 0;
  19.        
  20.         while(n != 0){
  21.            
  22.             sum += n%10;
  23.            
  24.             n/=10;
  25.         }
  26.        
  27.         n = sum;
  28.     }
  29.    
  30.     return sum;
  31. }
  32.  
  33. int print_interval(ll arr[], ll arr2[], ll arr3[], ll left, ll n){
  34.    
  35.     int right = left, i;
  36.    
  37.     while(arr3[right] == arr3[right+1])
  38.         right++;
  39.    
  40.     vector<ll> v;
  41.    
  42.     for(i = 0 ; i < n ; i++)
  43.         if(arr2[i] == arr3[left]){
  44.             //s.insert(arr[i]);
  45.             v.push_back(arr[i]);
  46.         }              
  47.    
  48.     sort(v.begin(),v.end());
  49.    
  50.     for(auto x : v)
  51.         cout << x << " ";
  52.    
  53.     return right;
  54. }
  55.  
  56. int main(int argc, char** argv) {
  57.    
  58.     ll arr[250], arr2[250], arr3[200], i = 0, j;
  59.    
  60. //    while(scanf("%ull",&arr[i]))
  61.     while(cin >> arr[i])
  62.         i++;
  63.    
  64.     ll n = i;
  65.    
  66.     for(i = 0 ; i < n ; i++){
  67.         arr2[i] = arr3[i] = calculate(arr[i]);
  68. //        cout << setw(2) << arr2[i] << " ";
  69.     }
  70.    
  71.     sort(arr3,arr3+n);
  72.    
  73. //    cout << endl;
  74. //    for(i = 0 ; i < n ; i++)
  75. //        cout << setw(2) << arr3[i] << " ";
  76. //    cout << endl;
  77.    
  78.     for(i = 0 ; i < n ; i++){
  79.         if(arr3[i] == arr3[i+1]){
  80.             i = print_interval(arr,arr2,arr3,i,n);
  81.         }
  82.         else{
  83.             for(j = 0 ; j < n ; j++){
  84.                 if(arr3[i] == arr2[j]){
  85.                     cout << arr[j] << " ";
  86.                 }
  87.             }
  88.         }
  89.     }
  90.  
  91.     return 0;
  92. }
  93. /*
  94.  15 14 13 12 11 10 9 8 7 - 10 11 12 13 14 15 7 8 9
  95.  
  96.  80 61 51 41 22 1 - 1 22 41 51 61 80
  97.  */
RAW Paste Data