Submission #1184396

#TimeUsernameProblemLanguageResultExecution timeMemory
1184396Noname_1900Carnival (CEOI14_carnival)C++20
100 / 100
2 ms436 KiB
#include<bits/stdc++.h>
using namespace std;
const int NMAX = 150+1;
int boss[NMAX];
int findBoss(int noeud)
{
    if(boss[noeud] == noeud)    return noeud;
    return boss[noeud] = findBoss(boss[noeud]);
}
void merge(int a, int b)
{
    a = findBoss(a);
    b = findBoss(b);
    boss[b] = a;
}
vector<int> soumissionDif;
void aff(int e, int r, int autre)
{
   // cout << e << endl << r << endl << autre << endl;
    cout << (r-e)+1 << " ";
  //  cout << endl;
    for(int i = e; i < r; i++)  cout << soumissionDif[i] << " ";
 //   cout << endl;
    cout << autre;
    cout << endl;
}
int iHabit[NMAX];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int nbE;
    cin >> nbE;
    for(int i = 0; i < nbE; i++)
    {
        boss[i+1] = i+1;
    }
   // cout << "oj" << endl;
    soumissionDif.push_back(1);
    for(int enfant = 2; enfant <= nbE; enfant++)
    {
       // cout << enfant << endl;
        aff(0, soumissionDif.size(), enfant);
        int nbDif;
        cin >> nbDif;
        if(nbDif == soumissionDif.size()+1)
        {
            soumissionDif.push_back(enfant);
        }
        else
        {
            int deb = 0, fin = soumissionDif.size();
            while(deb != fin-1)
            {
                int milieu = (deb+fin)/2;
                aff(deb, milieu, enfant);
                cin >> nbDif;
                if(nbDif == milieu-deb+1)
                    deb = milieu;
                else    
                    fin = milieu;
            }
            merge(soumissionDif[deb], enfant);
        }
    }
    int iAMEttre = 1;
    cout << 0 << " ";
    for(int i = 1; i <= nbE; i++)
    {
        int bossdeI = findBoss(i);
        if(!iHabit[bossdeI])
        {
            iHabit[bossdeI] = iAMEttre;
            iAMEttre++;
        }
        cout << iHabit[bossdeI] << " ";
    }
}
#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...