Codeforces Gym 101142 K. King's Heir

来源:互联网 发布:java scala 混合编程 编辑:程序博客网 时间:2024/05/19 12:40

题意

根据国王的死亡日期或他的 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");}