С++ o(nlogn) помогите решить задачу

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Olgita, 12 Nov 2016.

  1. Olgita

    Olgita New Member

    Joined:
    11 Nov 2016
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Программа получает серию чисел от юзера и заканчиватеся на цифре -1.
    Программа должна выводить серию чисел вводимых более 3 раз и их индексы.
    например
    input: 2 3 4 2 2 5 2 4 3 4 2 -1
    output
    2:0,3,4,6,10
    4:2,7,9
    Сложность o(nlogn)
     
  2. NetSter

    NetSter Moderator

    Joined:
    30 Jul 2007
    Messages:
    810
    Likes Received:
    414
    Reputations:
    62
    курсач? лаба ? )
     
    _________________________
  3. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    PHP:
    #include <algorithm>
    #include <iostream>
    #include <iterator>
    #include <functional>
    #include <map>
    #include <vector>

    struct number_info
    {
       
    int count 0;
       
    std::vector<intpositions;
    };

    int main()
    {
       
    std::map<intnumber_infonumber_count;
       
    std::cout << "Input numbers: ";
       
    int pos 0;
       
    std::find_if(std::istream_iterator<int>(std::cin), std::istream_iterator<int>(),
         [&
    number_count, &pos] (int value)
         {
           if(
    value == -1)
             return 
    true;
           
           
    autoinfo number_count[value];
           ++
    info.count;
           
    info.positions.push_back(pos++);
           return 
    false;
         }
       );
       
       for(const 
    autopair number_count)
       {
         if(
    pair.second.count 3)
           continue;
         
         
    std::cout << pair.first << ": ";
         const 
    charseparator "";
         for(const 
    autopos pair.second.positions)
         {
           
    std::cout << separator << pos;
           
    separator ", ";
         }
         
         
    std::cout << std::endl;
       }
    }