// Zadanie Konferencja
// Potyczki algorytmiczne 2026
#include <iostream>
#include <vector>
using namespace std;
int main()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
unsigned int n, k, a;
unsigned int xc, // minimalna liczba uczestn. do obsady kontynuacji
xn, // minimalna liczba uczestn. do obsady nowych
xf = 0; // liczba uczestn. niezajętych w danym dniu a zajętych wcześniej
cin >> k >> n;
vector<bool> has_cont (n + 1, false); // has_cont[0] niewykorzystana
for (unsigned int i = 2; i <= k; i++)
{
xc = 0, xn = 0;
cin >> n;
for (unsigned int j = 1; j <= n; j++)
{
cin >> a;
if (a > 0)
{
// j to kontynuacja a
has_cont[a] = true;
xc++;
}
}
xn = n - xc;
// Dodać do xf niekontynuowane z poprzedniego dnia
for (vector<bool>::iterator iter = has_cont.begin(); iter != has_cont.end(); iter++)
if (!(*iter))
xf++;
xf--; // bez has_cont[0]
// Przydzielić niezajętych uczestn. do nowych spotk.
if (xf >= xn)
xf -= xn;
else
xf = 0;
// Do następnej iteracji
has_cont.resize(n + 1);
for (vector<bool>::iterator iter = has_cont.begin(); iter != has_cont.end(); iter++)
*iter = false;
}
cout << xn + xc + xf << endl; // Albo n + xf
// system("pause");
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | // Zadanie Konferencja // Potyczki algorytmiczne 2026 #include <iostream> #include <vector> using namespace std; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); unsigned int n, k, a; unsigned int xc, // minimalna liczba uczestn. do obsady kontynuacji xn, // minimalna liczba uczestn. do obsady nowych xf = 0; // liczba uczestn. niezajętych w danym dniu a zajętych wcześniej cin >> k >> n; vector<bool> has_cont (n + 1, false); // has_cont[0] niewykorzystana for (unsigned int i = 2; i <= k; i++) { xc = 0, xn = 0; cin >> n; for (unsigned int j = 1; j <= n; j++) { cin >> a; if (a > 0) { // j to kontynuacja a has_cont[a] = true; xc++; } } xn = n - xc; // Dodać do xf niekontynuowane z poprzedniego dnia for (vector<bool>::iterator iter = has_cont.begin(); iter != has_cont.end(); iter++) if (!(*iter)) xf++; xf--; // bez has_cont[0] // Przydzielić niezajętych uczestn. do nowych spotk. if (xf >= xn) xf -= xn; else xf = 0; // Do następnej iteracji has_cont.resize(n + 1); for (vector<bool>::iterator iter = has_cont.begin(); iter != has_cont.end(); iter++) *iter = false; } cout << xn + xc + xf << endl; // Albo n + xf // system("pause"); } |
English