#include <bits/stdc++.h>
using namespace std;
tuple<int,int,int> rozkmina(int p, int q) {
if (p == 999 || q == 999) {
int pyza = (p == 999 ? q : p);
int fiko = (p == 999 ? 0 : 1);
return {pyza, 0, fiko};
}
int pyza = (int)((1LL * ((p + q) % 999) * 500) % 999);
int glut = p - pyza;
if (glut < 0) glut += 999;
if (glut <= 499) return {pyza, glut, 0};
return {pyza, 999 - glut, 1};
}
pair<int,int> sklejka(int pyza, int klusek, int fiko) {
int a, b;
if (klusek == 0) {
a = 999;
b = pyza;
} else {
a = pyza + klusek;
if (a >= 999) a -= 999;
b = pyza - klusek;
if (b < 0) b += 999;
}
if (fiko) swap(a, b);
return {a, b};
}
int zjem(int x) {
return x == 1000 ? 999 : x - 1;
}
int oddam(int x) {
return x == 999 ? 1000 : x + 1;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string kto;
cin >> kto;
int a, b;
cin >> a >> b;
a = zjem(a);
b = zjem(b);
auto [pyza, klusek, fiko] = rozkmina(a, b);
if (kto == "Algosia") {
int nowy = klusek + 1;
if (nowy == 500) nowy = 0;
auto [c, d] = sklejka(pyza, nowy, fiko);
cout << oddam(c) << ' ' << oddam(d) << '\n';
cout.flush();
} else {
int stary = klusek + 499;
if (stary >= 500) stary -= 500;
auto [c, d] = sklejka(pyza, stary, fiko);
cout << oddam(c) << ' ' << oddam(d) << '\n';
cout.flush();
}
return 0;
}
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 <bits/stdc++.h> using namespace std; tuple<int,int,int> rozkmina(int p, int q) { if (p == 999 || q == 999) { int pyza = (p == 999 ? q : p); int fiko = (p == 999 ? 0 : 1); return {pyza, 0, fiko}; } int pyza = (int)((1LL * ((p + q) % 999) * 500) % 999); int glut = p - pyza; if (glut < 0) glut += 999; if (glut <= 499) return {pyza, glut, 0}; return {pyza, 999 - glut, 1}; } pair<int,int> sklejka(int pyza, int klusek, int fiko) { int a, b; if (klusek == 0) { a = 999; b = pyza; } else { a = pyza + klusek; if (a >= 999) a -= 999; b = pyza - klusek; if (b < 0) b += 999; } if (fiko) swap(a, b); return {a, b}; } int zjem(int x) { return x == 1000 ? 999 : x - 1; } int oddam(int x) { return x == 999 ? 1000 : x + 1; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); string kto; cin >> kto; int a, b; cin >> a >> b; a = zjem(a); b = zjem(b); auto [pyza, klusek, fiko] = rozkmina(a, b); if (kto == "Algosia") { int nowy = klusek + 1; if (nowy == 500) nowy = 0; auto [c, d] = sklejka(pyza, nowy, fiko); cout << oddam(c) << ' ' << oddam(d) << '\n'; cout.flush(); } else { int stary = klusek + 499; if (stary >= 500) stary -= 500; auto [c, d] = sklejka(pyza, stary, fiko); cout << oddam(c) << ' ' << oddam(d) << '\n'; cout.flush(); } return 0; } |
English