Advertisement
Guest User

lalala

a guest
Nov 18th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.45 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. #include<algorithm>
  4. #include<vector>
  5.  
  6. using namespace std;
  7.  
  8. int main() {
  9.     string s;
  10.     cin >> s;
  11.    
  12.     vector<string> nums;
  13.     vector<string> words;
  14.     vector<pair<int, int> > dots;
  15.    
  16.     int positions = 0;
  17.    
  18.     for(int i = 0; i < s.size()+1;) {
  19.         int count = 1, k = i+1;
  20.        
  21.         if(i == s.size()) {
  22.             dots.push_back(make_pair(0, positions));
  23.             break;
  24.         }
  25.        
  26.         if(s[i] == '.') {
  27.             while(s[k] == '.' && k < s.size()) {
  28.                 count++;
  29.                 k++;
  30.             }
  31.            
  32.             dots.push_back(make_pair(count, positions));
  33.             positions = 0;
  34.         } else
  35.        
  36.         if(s[i] >= 'a' && s[i] <= 'z') {
  37.             string word;
  38.             word.push_back(s[i]);
  39.             while(s[k] >= 'a' && s[k] <= 'z' && k < s.size()) {
  40.                 count++;
  41.                 word += s[k];
  42.                 k++;
  43.             }
  44.            
  45.             words.push_back(word);
  46.             positions++;
  47.         } else
  48.        
  49.         if(s[i] >= '0' && s[i] <= '9') {
  50.             string num;
  51.             num.push_back(s[i]);
  52.             while(s[k] >= '0' && s[k] <= '9' && k < s.size()) {
  53.                 count++;
  54.                 num.push_back(s[k]);
  55.                 k++;
  56.             }
  57.            
  58.             nums.push_back(num);
  59.             positions++;
  60.         }
  61.        
  62.         i += count;
  63.         k = i+1;
  64.     }
  65.  
  66.     int countW = 0, countN = 0;
  67.    
  68.     for(int i = 0; i < dots.size(); i++) {
  69.         for(int j = 0; j < dots[i].second; j++) {
  70.             if(countN < nums.size()) {
  71.                 cout << nums[countN];
  72.                 countN++;
  73.             } else if(countW < words.size()) {
  74.                 cout << words[countW];
  75.                 countW++;
  76.             }
  77.         }
  78.  
  79.         for(int j = 0; j < dots[i].first; j++) {
  80.             cout << '.';
  81.         }
  82.     }
  83.    
  84.     return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement