题意
根据国王的死亡日期或他的 n 个儿子的出生日期,找出在国王死亡时刻满 18 周岁且最年轻的儿子。
解题思路
模拟
代码
#include<bits/stdc++.h>
using namespace std;
struct Age {
int d, m, y, idx;
} age[120], norm;
bool operator<(Age a, Age b) {
if(a.y == b.y) {
if(a.m == b.m)
return a.d > b.d;
return a.m > b.m;
}
return a.y > b.y;
}
bool jug(int i)
{
if(age[i].y < norm.y) return true;
if(age[i].y > norm.y) return false;
if(age[i].m < norm.m) return true;
if(age[i].m > norm.m) return false;
if(age[i].d > norm.d) return false;
return true;
}
int main()
{
freopen("king.in", "r", stdin);
freopen("king.out", "w", stdout);
scanf("%d %d %d",&norm.d, &norm.m, &norm.y);
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d %d %d", &age[i].d, &age[i].m, &age[i].y);
age[i].idx = i;
}
sort(age+1, age+n+1);
norm.y -= 18;
for(int i=1;i<=n;i++)
{
if(jug(i)) {
printf("%d\n", age[i].idx);
return 0;
}
}
printf("-1\n");
}