# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
257935 | MrRobot_28 | Datum (COCI20_datum) | C++17 | 34 ms | 1528 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
bool cmp(vector <int> a, vector <int> b)
{
if(a[2] != b[2])
{
return a[2] < b[2];
}
else if(a[1] != b[1])
{
return a[1] < b[1];
}
else
{
return a[0] < b[0];
}
}
signed main() {
// ios_base::sync_with_stdio(false);
// cin.tie(NULL);
// cout.tie(NULL);
int n;
cin >> n;
vector <vector <int> > a(n, vector <int> (4));
for(int i = 0; i < n; i++)
{
string s;
cin >> s;
a[i][0] = (s[0] - '0') * 10 + s[1] - '0';
a[i][1] = (s[3] - '0') * 10 + s[4] - '0';
a[i][2] = (s[6] - '0') * 1000 + (s[7] - '0') * 100 + (s[8] - '0') * 10 + (s[9] - '0');
a[i][3] = i;
}
sort(a.begin(), a.end(), cmp);
vector <vector <int> > mass;
for(int c = 0; c < 10000; c++)
{
int a = (c % 10) * 10 + (c / 10) % 10;
int b = ((c / 100) % 10) * 10 + c / 1000;
if(b > 0 && b <= 12){
if(b == 1 || b == 3 || b == 5 || b == 7 || b == 8 || b == 10 || b == 12)
{
if(a > 0 && a < 32)
{
vector <int> pu;
pu.push_back(a);
pu.push_back(b);
pu.push_back(c);
mass.push_back(pu);
}
}
else if(b == 2)
{
if(c % 400 == 0 || c % 4 == 0 && c % 100 != 0)
{
if(a > 0 && a < 30)
{vector <int> pu;
pu.push_back(a);
pu.push_back(b);
pu.push_back(c);
mass.push_back(pu);
}
}
else
{
if(a > 0 && a < 29)
{vector <int> pu;
pu.push_back(a);
pu.push_back(b);
pu.push_back(c);
mass.push_back(pu);
}
}
}
else if(a > 0 && a < 31)
{vector <int> pu;
pu.push_back(a);
pu.push_back(b);
pu.push_back(c);
mass.push_back(pu);
}
}
}
vector <vector <int> > ans(n, vector <int> (3));
int it = 0;
for(int i = 0; i < n; i++)
{
while(a[i][2] > mass[it][2] || (a[i][2] == mass[it][2] && (a[i][1] > mass[it][1] || (a[i][1] == mass[it][1] && a[i][0] >= mass[it][0]))))
{
it++;
}
ans[a[i][3]] = mass[it];
}
for(int i = 0; i < n; i++)
{
cout << ans[i][0] / 10 << ans[i][0] % 10 << ".";
cout << ans[i][1] / 10 << ans[i][1] % 10 << ".";
cout << ans[i][2] / 1000 << ans[i][2] / 100 % 10 << ans[i][2] / 10 % 10 << ans[i][2] % 10 << ".\n";
}
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |