# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
502408 | inksamurai | Datum (COCI20_datum) | C++17 | 7 ms | 460 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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) 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 time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |