#include "cielib.h" #include <bits/stdc++.h> using namespace std; struct pd { int L; int P; }; pd mpd(int l, int p) { pd h = {l, p}; return h; } pd t[505]; bool odw[505]; int pozycja[505]; int main() { int d, k, r; // cin >> d >> k >> r; d = podajD(); k = podajK(); r = podajR(); int hd = 0; if(r%2 == 0)r++; for(int i = 0; i < d; i++){t[i].L = 2; t[i].P = r;} int licz = 0; czyCieplo(pozycja); k--; while(k--) { hd %= d; if(licz == d) break; if(odw[hd])continue; if((t[hd].P - t[hd].L) <= 1){licz++; odw[hd] = true; hd++; k++; continue;} if(t[hd].P == pozycja[hd])pozycja[hd] = t[hd].L; else pozycja[hd] = t[hd].P; if((t[hd].L + t[hd].P)%2 == 0)t[hd].P++; if(czyCieplo(pozycja)) { if(pozycja[hd] == t[hd].P)t[hd].L = (t[hd].L + t[hd].P)/2; else if(pozycja[hd] == t[hd].L)t[hd].P = (t[hd].L + t[hd].P)/2; } hd++; } hd = 0; for(int i = 0; i < d; i++) {pozycja[i] = (t[i].L + t[i].P)/2;} // czyCieplo(pozycja); // k--; // while(k--) // { // if(t[hd].P == pozycja[hd])pozycja[hd] = t[hd].L; // else pozycja[hd] = t[hd].P; // if(czyCieplo(pozycja)) // { // break; // } // hd++; hd %= d; // } znalazlem(pozycja); } // for(int i = 0; i < d; i++) // cout << t[hd].L << " " << t[hd].P << " |" << pozycja[i] << "| "; // cout << endl; // cin >> poz; // cout << "znalazlem" << endl; // for(int i = 0; i < d; i++) // cout << pozycja[i] << " ";
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include "cielib.h" #include <bits/stdc++.h> using namespace std; struct pd { int L; int P; }; pd mpd(int l, int p) { pd h = {l, p}; return h; } pd t[505]; bool odw[505]; int pozycja[505]; int main() { int d, k, r; // cin >> d >> k >> r; d = podajD(); k = podajK(); r = podajR(); int hd = 0; if(r%2 == 0)r++; for(int i = 0; i < d; i++){t[i].L = 2; t[i].P = r;} int licz = 0; czyCieplo(pozycja); k--; while(k--) { hd %= d; if(licz == d) break; if(odw[hd])continue; if((t[hd].P - t[hd].L) <= 1){licz++; odw[hd] = true; hd++; k++; continue;} if(t[hd].P == pozycja[hd])pozycja[hd] = t[hd].L; else pozycja[hd] = t[hd].P; if((t[hd].L + t[hd].P)%2 == 0)t[hd].P++; if(czyCieplo(pozycja)) { if(pozycja[hd] == t[hd].P)t[hd].L = (t[hd].L + t[hd].P)/2; else if(pozycja[hd] == t[hd].L)t[hd].P = (t[hd].L + t[hd].P)/2; } hd++; } hd = 0; for(int i = 0; i < d; i++) {pozycja[i] = (t[i].L + t[i].P)/2;} // czyCieplo(pozycja); // k--; // while(k--) // { // if(t[hd].P == pozycja[hd])pozycja[hd] = t[hd].L; // else pozycja[hd] = t[hd].P; // if(czyCieplo(pozycja)) // { // break; // } // hd++; hd %= d; // } znalazlem(pozycja); } // for(int i = 0; i < d; i++) // cout << t[hd].L << " " << t[hd].P << " |" << pozycja[i] << "| "; // cout << endl; // cin >> poz; // cout << "znalazlem" << endl; // for(int i = 0; i < d; i++) // cout << pozycja[i] << " "; |