Submission #579483

#TimeUsernameProblemLanguageResultExecution timeMemory
579483webCarnival (CEOI14_carnival)C++17
100 / 100
19 ms336 KiB
#include <iostream>
#include <vector>
#include <string>
#include <set>
#include <math.h>
using namespace std;

vector<vector<int>> merge(vector<vector<int>> v1, vector<vector<int>> v2)
{
    if(v1.size() == 0)
        return v2;
    if(v2.size() == 0)
        return v1;
    if(v1.size() < v2.size())
        swap(v1,v2);

    for(int j = 0; j<v2.size(); ++j)
    {

        set<int> representativesV1;
        for(int i = 0; i<v1.size(); ++i)
            representativesV1.insert(v1[i][0]);
        
        int result;
        if(representativesV1.size() !=0)
        {
            string output = to_string(representativesV1.size() +1) +" ";
            for(auto el : representativesV1)
                output += to_string(el+1) + " ";
            output += to_string(v2[j][0]+1);
            cout<<output<<endl;
            cin>>result;
        }
        else
        {
            result =0;
        }
        if(result == representativesV1.size())
        {    
            for(int i = 0; i<v1.size(); ++i)
            {
                cout<<2<<" "<<v1[i][0]+1<<" "<<v2[j][0]+1<<endl;
                int res; cin>>res;
                if(res == 1)
                {
                    
                    for(int k = 0; k<v2[j].size(); ++k)
                    {
                        v1[i].push_back(v2[j][k]);

                    }
                    break;
                }
            }
        }   
        else
        {
            v1.push_back(v2[j]);
        }
        
    }
  
    
    return v1;
}

vector<vector<int>> mergeSort(vector<vector<int>> friends)
{
    if(friends.size() == 1)
        return friends;
    if(friends.size() == 0)
        return vector<vector<int>>(0);
    int mid = friends.size()/2;
    vector<vector<int>> sort1 = mergeSort(vector<vector<int>>(friends.begin(), friends.begin() + mid));
    vector<vector<int>> sort2 = mergeSort(vector<vector<int>>(friends.begin() + mid, friends.end()));
    return merge(sort1, sort2);
}



int main()
{
    int numFriendsKnown = 0;
    int numFriendsTotal; cin>>numFriendsTotal;
    vector<vector<int>> fr(numFriendsTotal);
    for(int i = 0; i<numFriendsTotal; ++i)
    {
        fr[i] = {i};
    }
    vector<vector<int>> groups = mergeSort(fr);
    
    for(int i = 0; i<groups.size(); ++i)
    {
        for(int j =0; j<groups[i].size(); ++j)
        {
            fr[groups[i][j]] = {i+1};
        }
    }
    cout<<0<<" ";
    for(int i = 0; i<fr.size(); ++i)
    {
        cout<<fr[i][0]<<" ";
    }
    cout<<endl;

    return 0;
}

Compilation message (stderr)

carnival.cpp: In function 'std::vector<std::vector<int> > merge(std::vector<std::vector<int> >, std::vector<std::vector<int> >)':
carnival.cpp:17:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |     for(int j = 0; j<v2.size(); ++j)
      |                    ~^~~~~~~~~~
carnival.cpp:21:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |         for(int i = 0; i<v1.size(); ++i)
      |                        ~^~~~~~~~~~
carnival.cpp:38:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::set<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |         if(result == representativesV1.size())
      |            ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
carnival.cpp:40:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |             for(int i = 0; i<v1.size(); ++i)
      |                            ~^~~~~~~~~~
carnival.cpp:47:37: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |                     for(int k = 0; k<v2[j].size(); ++k)
      |                                    ~^~~~~~~~~~~~~
carnival.cpp: In function 'int main()':
carnival.cpp:92:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   92 |     for(int i = 0; i<groups.size(); ++i)
      |                    ~^~~~~~~~~~~~~~
carnival.cpp:94:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   94 |         for(int j =0; j<groups[i].size(); ++j)
      |                       ~^~~~~~~~~~~~~~~~~
carnival.cpp:100:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  100 |     for(int i = 0; i<fr.size(); ++i)
      |                    ~^~~~~~~~~~
carnival.cpp:83:9: warning: unused variable 'numFriendsKnown' [-Wunused-variable]
   83 |     int numFriendsKnown = 0;
      |         ^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...