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...