제출 #219315

#제출 시각아이디문제언어결과실행 시간메모리
219315kartelDatum (COCI20_datum)C++14
0 / 50
1091 ms388 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; void makeans(string d, string m, string y) { int D, M, Y, DA, MA, YA; D = atoi(d.c_str()); M = atoi(m.c_str()); Y = atoi(y.c_str()); DA = atoi(da.c_str()); MA = atoi(ma.c_str()); YA = atoi(ya.c_str()); if (Y < YA) {ya = y; ma = m; da = d;return;} if (Y == YA && M < MA) {ya = y; ma = m; da = d;return;} if (Y == YA && M == MA && D < DA) {ya = y; ma = M; da = d;return;} } 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; cin >> q; while (q--) { string s, t, m, y, d; int i, j, Y, D; cin >> s; t = s; t.erase(t.size() - 1); t.erase(2, 1); t.erase(4, 1); ya = t.substr(4); ma = t.substr(2, 2); da = t.substr(0, 2); j = 0; while (j < t.size() - j - 1) t[j] = t[t.size() - j - 1], j++; m = t.substr(2, 2); d = t.substr(0, 2); y = t.substr(4); Y = atoi(y.c_str()); D = atoi(d.c_str()); // M = atoi(m.c_str()); if (m == "01" && D <= 31) makeans(d, m, y); if ((m == "02" && D <= 28) || (Y % 4 == 0 && m == "02" && D <= 29)) makeans(d, m, y); if (m == "03" && D <= 31) makeans(d, m, y); if (m == "04" && D <= 30) makeans(d, m, y); if (m == "05" && D <= 31) makeans(d, m, y); if (m == "06" && D <= 30) makeans(d, m, y); if (m == "07" && D <= 31) makeans(d, m, y); if (m == "08" && D <= 31) makeans(d, m, y); if (m == "09" && D <= 30) makeans(d, m, y); if (m == "10" && D <= 31) makeans(d, m, y); if (m == "11" && D <= 30) makeans(d, m, y); if (m == "12" && D <= 31) makeans(d, m, y); // cout << da << "." << ma << "." << ya << "." << el; // continue; for (i = 0; i < 4000; i++) { j = t.size() - 1; while (j >= 0 && t[j] == '9') t[j] = '0', j--; if (j < 0) break; t[j]++; j = 0; while (j < 4) t[j] = t[t.size() - j - 1], j++; m = t.substr(2, 2); d = t.substr(0, 2); y = t.substr(4); Y = atoi(y.c_str()); D = atoi(d.c_str()); if (m == "01" && D <= 31) makeans(d, m, y); if ((m == "02" && D <= 28) || (Y % 4 == 0 && m == "02" && D <= 29)) makeans(d, m, y); if (m == "03" && D <= 31) makeans(d, m, y); if (m == "04" && D <= 30) makeans(d, m, y); if (m == "05" && D <= 31) makeans(d, m, y); if (m == "06" && D <= 30) makeans(d, m, y); if (m == "07" && D <= 31) makeans(d, m, y); if (m == "08" && D <= 31) makeans(d, m, y); if (m == "09" && D <= 30) makeans(d, m, y); if (m == "10" && D <= 31) makeans(d, m, y); if (m == "11" && D <= 30) makeans(d, m, y); if (m == "12" && D <= 31) makeans(d, m, y); } cout << da << "." << ma << "." << ya << "." << el; } }

컴파일 시 표준 에러 (stderr) 메시지

datum.cpp: In function 'int main()':
datum.cpp:70:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while (j < t.size() - j - 1) t[j] = t[t.size() - j - 1], j++;
                ~~^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...