#include <iostream>
#include <cstdio>
#include <cstdlib>
int c;
void SKIP_WHITESPACE() {
while (1) {
c = fgetc(stdin);
if (c != ' ' && c != '\n' && c != '\r')
break;
}
}
int READ_INT() {
SKIP_WHITESPACE();
int ret = c - '0';
while (1) {
c = fgetc(stdin);
if (c < '0' || c > '9')
break;
ret = ret * 10 + c - '0';
}
return ret;
}
char READ_CHAR() {
unsigned char ret = c;
c = fgetc(stdin);
return ret;
}
void SKIP_LETTERS() {
while (1) {
c = fgetc(stdin);
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))
continue;
break;
}
}
struct para {
int a;
int b;
};
int N=1000;
para code(const para &p) {
para ret;
int diff = (p.b - p.a + N) % N;
if (diff < N/2) {
ret.a = (p.a - 2 + N ) % N + 1;
ret.b = (ret.a - diff - 1 + N) % N + 1;
} else if (diff > N/2) {
ret.a = (p.a + N ) % N + 1;
ret.b = (ret.a - diff - 1 + N) % N + 1;
} else {
ret.a = (p.a - 1 + N/4) % N + 1;
ret.b = (p.b - 1 + N/4) % N + 1;
}
return ret;
}
para decode(const para &p) {
para ret;
int diff = (p.b - p.a + N) % N;
if (diff < N/2) {
ret.a = (p.a - 2 + N ) % N + 1;
ret.b = (ret.a - diff - 1 + N) % N + 1;
} else if (diff > N/2) {
ret.a = (p.a + N ) % N + 1;
ret.b = (ret.a - diff - 1 + N) % N + 1;
} else {
ret.a = (p.a - 1 + 3*N/4) % N + 1;
ret.b = (p.b - 1 + 3*N/4) % N + 1;
}
return ret;
}
void check(const para &p) {
if (p.a < 1 || p.a > N || p.b < 1 || p.b > N || p.a == p.b) {
std::cout << "range failed: " << "p.a=" << p.a << " p.b=" << p.b << "\n";
}
}
void crosscheck(const para &p, const para &q) {
if (p.a == q.a || p.b == q.b || p.a == q.b || p.b == q.a) {
std::cout << "cross check failed: " << "p.a=" << p.a << " p.b=" << p.b << "\n";
}
}
int main(int argc, char* argv[]) {
std::ios_base::sync_with_stdio (false);
SKIP_WHITESPACE();
char w = READ_CHAR();
SKIP_LETTERS();
para p, q;
p.a = READ_INT();
p.b = READ_INT();
if (w == 'A') {
q = code(p);
} else {
q = decode(p);
}
std::cout << q.a << " " << q.b << "\n";
std::cout.flush();
return EXIT_SUCCESS;
}
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | #include <iostream> #include <cstdio> #include <cstdlib> int c; void SKIP_WHITESPACE() { while (1) { c = fgetc(stdin); if (c != ' ' && c != '\n' && c != '\r') break; } } int READ_INT() { SKIP_WHITESPACE(); int ret = c - '0'; while (1) { c = fgetc(stdin); if (c < '0' || c > '9') break; ret = ret * 10 + c - '0'; } return ret; } char READ_CHAR() { unsigned char ret = c; c = fgetc(stdin); return ret; } void SKIP_LETTERS() { while (1) { c = fgetc(stdin); if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) continue; break; } } struct para { int a; int b; }; int N=1000; para code(const para &p) { para ret; int diff = (p.b - p.a + N) % N; if (diff < N/2) { ret.a = (p.a - 2 + N ) % N + 1; ret.b = (ret.a - diff - 1 + N) % N + 1; } else if (diff > N/2) { ret.a = (p.a + N ) % N + 1; ret.b = (ret.a - diff - 1 + N) % N + 1; } else { ret.a = (p.a - 1 + N/4) % N + 1; ret.b = (p.b - 1 + N/4) % N + 1; } return ret; } para decode(const para &p) { para ret; int diff = (p.b - p.a + N) % N; if (diff < N/2) { ret.a = (p.a - 2 + N ) % N + 1; ret.b = (ret.a - diff - 1 + N) % N + 1; } else if (diff > N/2) { ret.a = (p.a + N ) % N + 1; ret.b = (ret.a - diff - 1 + N) % N + 1; } else { ret.a = (p.a - 1 + 3*N/4) % N + 1; ret.b = (p.b - 1 + 3*N/4) % N + 1; } return ret; } void check(const para &p) { if (p.a < 1 || p.a > N || p.b < 1 || p.b > N || p.a == p.b) { std::cout << "range failed: " << "p.a=" << p.a << " p.b=" << p.b << "\n"; } } void crosscheck(const para &p, const para &q) { if (p.a == q.a || p.b == q.b || p.a == q.b || p.b == q.a) { std::cout << "cross check failed: " << "p.a=" << p.a << " p.b=" << p.b << "\n"; } } int main(int argc, char* argv[]) { std::ios_base::sync_with_stdio (false); SKIP_WHITESPACE(); char w = READ_CHAR(); SKIP_LETTERS(); para p, q; p.a = READ_INT(); p.b = READ_INT(); if (w == 'A') { q = code(p); } else { q = decode(p); } std::cout << q.a << " " << q.b << "\n"; std::cout.flush(); return EXIT_SUCCESS; } |
English