제출 #502409

#제출 시각아이디문제언어결과실행 시간메모리
502409inksamuraiDatum (COCI20_datum)C++17
10 / 50
8 ms460 KiB
#include <bits/stdc++.h> #define fi first #define se second #define pb push_back #define sz(a) (int)a.size() #define all(a) a.begin(),a.end() #define rep(i,n) for(int i=0;i<n;i++) #define crep(i,x,n) for(int i=x;i<n;i++) #define drep(i,n) for(int i=n-1;i>=0;i--) #define vec(...) vector<__VA_ARGS__> #define _3qplfh5 ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0) using namespace std; typedef long long ll; typedef long double ld; void print(){ cout<<"\n"; } template<class te,class ...ti> void print(const te&v, const ti&...nv) { cout<<v; if(sizeof...(nv)){ cout<<" "; print(nv...); } } using pii=pair<int,int>; using vi=vector<int>; using vll=vector<long long>; const int inf=1e9; const int valid[]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 , 31}; vec(vi) pals; void gap(){ vi rbt; auto dfs=[&](auto self)->void{ if(sz(rbt)==4){ bool pok=1; reverse(rbt.begin(),rbt.end()); int m=rbt[2]*10+rbt[3],d=rbt[0]*10+rbt[1],y=rbt[4]*1000+rbt[5]*100+rbt[6]*10+rbt[7]; if(m>12 or m==0 or d==0 or y==0) pok=0; if(m==2){ if(y%4==0) pok=pok and (d<=29); else pok=pok and (d<=28); }else{ pok=pok and (d<=valid[m-1]); } reverse(rbt.begin(),rbt.end()); if(pok) pals.pb(rbt); return; } rep(x,10){ rbt.pb(x); self(self); rbt.pop_back(); } }; dfs(dfs); sort(pals.begin(),pals.end()); } void slv(){ string s; cin>>s; vi q; rep(i,sz(s)){ if(s[i]!='.'){ if(i>5) q.pb(s[i]-'0'); } } auto it=upper_bound(pals.begin(),pals.end(),q); if(it!=pals.end()){ vi pans=*it; vi _e=pans; reverse(_e.begin(),_e.end()); rep(i,sz(_e)){ cout<<_e[i]; if(i==1 or i==3) cout<<"."; } rep(i,sz(pans)){ cout<<pans[i]; } cout<<".\n"; }else{ assert(false); } } int main(){ _3qplfh5; gap(); int t=0; cin>>t; rep(cs,t) slv(); // return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...