GAME3112 - Ngày 31 tháng 12

Tác giả: RR

Ngôn ngữ: C++

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <iomanip>
#include <bitset>
#include <complex>

#define FOR(i,a,b) for(int i = a; i <= b; ++i)
#define FORD(i,a,b) for(int i = a; i >= b; --i)
#define REP(i,a) for(int i = 0; i < a; ++i)
#define MP make_pair
#define PB push_back

using namespace std;

int f[111][111], trd[111][111], trm[111][111];

const int ndate[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int get(int date, int month) {
    if (f[date][month] >= 0) return f[date][month];
    if (date == 31 && month == 12) return f[date][month] = 1;

    FOR(m,1,12) FOR(d,1,31)
    if (d <= ndate[m-1])
    if (m == month || d == date)
    if (m > month || (m == month && d > date)) {
        if (get(d, m) == 0) {
            trd[date][month] = d;
            trm[date][month] = m;
            return f[date][month] = 1;
        }
    }
    return f[date][month] = 0;
}

int main() {
    int d, m;
    cin >> d >> m;
    memset(f, -1, sizeof f);
    if (get(d, m)) {
        cout << trd[d][m] << ' ' << trm[d][m] << endl;
    }
    else puts("LOSS");
    return 0;
}

Download