#include <iostream>
#define TOTAL_DAYS(day,month,year) (day + month*31 + year*365)
namespace checkingDate
{
#define C(i) static const char c##i = __DATE__[i];
C(0); C(1); C(2); C(3);
C(4); C(5); C(6); C(7);
C(8); C(9); C(10);
static const int current_date = c4 == ' ' ? c5 - '0' : c5 - '0' + 10;
static const int current_month = (
c0 == 'J' // Jan Jun Jul
? (c1 == 'a' ? 1 : (c2 == 'n' ? 6 : 7))
: c0 == 'F' ? 2
: c0 == 'M' // Mar May
? (c2 == 'r' ? 3 : 5)
: c0 == 'A' // Apr Aug
? (c1 == 'p' ? 4 : 8)
: c0 == 'S' ? 9
: c0 == 'O' ? 10
: c0 == 'N' ? 11
: 12
);
static const int current_year = ((c7 - '0') * 1000) + ((c8 - '0') * 100) + ((c9 - '0') * 10) + (c10 - '0');
static const int totalDays = TOTAL_DAYS(current_date, current_month, current_year);
}
# define TODO(day,month,year, str) static_assert(checkingDate::totalDays - TOTAL_DAYS(day,month,year)<30, "old msg");
int main()
{
TODO(13, 8, 2015, "...");
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKI2RlZmluZSBUT1RBTF9EQVlTKGRheSxtb250aCx5ZWFyKSAoZGF5ICsgbW9udGgqMzEgKyB5ZWFyKjM2NSkKCm5hbWVzcGFjZSBjaGVja2luZ0RhdGUKewojZGVmaW5lIEMoaSkgc3RhdGljIGNvbnN0IGNoYXIgYyMjaSA9IF9fREFURV9fW2ldOwoKCUMoMCk7IEMoMSk7IEMoMik7IEMoMyk7CglDKDQpOyBDKDUpOyBDKDYpOyBDKDcpOwoJQyg4KTsgQyg5KTsgQygxMCk7CgoJc3RhdGljIGNvbnN0IGludCBjdXJyZW50X2RhdGUgPSBjNCA9PSAnICcgPyBjNSAtICcwJyA6IGM1IC0gJzAnICsgMTA7CgoJc3RhdGljIGNvbnN0IGludCBjdXJyZW50X21vbnRoID0gKAoJCWMwID09ICdKJyAvLyBKYW4gSnVuIEp1bAoJCT8gKGMxID09ICdhJyA/IDEgOiAoYzIgPT0gJ24nID8gNiA6IDcpKQoJCTogYzAgPT0gJ0YnID8gMgoJCTogYzAgPT0gJ00nIC8vIE1hciBNYXkKCQk/IChjMiA9PSAncicgPyAzIDogNSkKCQk6IGMwID09ICdBJyAvLyBBcHIgQXVnCgkJPyAoYzEgPT0gJ3AnID8gNCA6IDgpCgkJOiBjMCA9PSAnUycgPyA5CgkJOiBjMCA9PSAnTycgPyAxMAoJCTogYzAgPT0gJ04nID8gMTEKCQk6IDEyCgkJKTsKCglzdGF0aWMgY29uc3QgaW50IGN1cnJlbnRfeWVhciA9ICgoYzcgLSAnMCcpICogMTAwMCkgKyAoKGM4IC0gJzAnKSAqIDEwMCkgKyAoKGM5IC0gJzAnKSAqIDEwKSArIChjMTAgLSAnMCcpOwoJc3RhdGljIGNvbnN0IGludCB0b3RhbERheXMgPSBUT1RBTF9EQVlTKGN1cnJlbnRfZGF0ZSwgY3VycmVudF9tb250aCwgY3VycmVudF95ZWFyKTsKfQoKIwlkZWZpbmUgVE9ETyhkYXksbW9udGgseWVhciwgc3RyKSAgc3RhdGljX2Fzc2VydChjaGVja2luZ0RhdGU6OnRvdGFsRGF5cyAtIFRPVEFMX0RBWVMoZGF5LG1vbnRoLHllYXIpPDMwLCAib2xkIG1zZyIpOwoKaW50IG1haW4oKQp7CglUT0RPKDEzLCA4LCAyMDE1LCAiLi4uIik7Cn0KCgo=