제출 #219339

#제출 시각아이디문제언어결과실행 시간메모리
219339kartelDatum (COCI20_datum)C++14
40 / 50
714 ms660 KiB
#include <bits/stdc++.h> //#include <ext/pb_ds/assoc_container.hpp> //#include <ext/pb_ds/tree_policy.hpp> #define in(x) freopen(x, "r", stdin) #define out(x) freopen(x, "w", stdout) #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #pragma GCC optimize("-O3") #define F first #define S second #define pb push_back #define N +400500 //#define M ll(1e9 + 7) #define sz(x) (int)x.size() #define re return #define oo ll(1e18) #define el '\n' using namespace std; //using namespace __gnu_pbds; //typedef tree <int, null_type, less_equal <int> , rb_tree_tag, tree_order_statistics_node_update> ordered_set; typedef long long ll; typedef long double ld; string da, ma, ya; int ds, ys, ms, Y, M, D; string y, d, m; bool gd(int Y) { y = to_string(Y); while (y.size() < 4) y = "0" + y; d[0] = y[3]; d[1] = y[2]; m[0] = y[1]; m[1] = y[0]; M = atoi(m.c_str()); D = atoi(d.c_str()); if (M > 12) return 0; if (D == 0 || M == 0 || (Y == ys && (M < ms || (M == ms && D < ds)))) return 0; if (m == "01" && D > 31) return 0; if ((Y % 4 && m == "02" && D > 28) || (Y % 4 == 0 && m == "02" && D > 29)) return 0; if (m == "03" && D > 31) return 0; if (m == "04" && D > 30) return 0; if (m == "05" && D > 31) return 0; if (m == "06" && D > 30) return 0; if (m == "07" && D > 31) return 0; if (m == "08" && D > 31) return 0; if (m == "09" && D > 30) return 0; if (m == "10" && D > 31) return 0; if (m == "11" && D > 30) return 0; if (m == "12" && D > 31) return 0; return 1; } int main() { srand(time(0)); ios_base::sync_with_stdio(0); iostream::sync_with_stdio(0); ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); // in("qual.in"); // out("qual.out"); int q; string s, t; cin >> q; d = "00"; m = "00"; // cout << el; while (q--) { cin >> s; t = s; t.erase(t.size() - 1); t.erase(2, 1); t.erase(4, 1); ms = atoi(t.substr(2, 2).c_str()); ds = atoi(t.substr(0, 2).c_str()); ys = atoi(t.substr(4).c_str()); Y = ys; while (!gd(Y)) Y++; y = to_string(Y); while (y.size() < 4) y = "0" + y; d[0] = y[3]; d[1] = y[2]; m[0] = y[1]; m[1] = y[0]; cout << d << "." << m << "." << y << "." << el; } }
#Verdict Execution timeMemoryGrader output
Fetching results...