P7041 [NWRRC2016]King’s Heir 题解
ztjp13
2020-12-20 22:19:27
不得不说,ACM的题水起来是真的水,这题同样如此/
其实这题只要把几个儿子年龄从小到大排序,找第一个符合要求的就行了
上代码
```cpp
#include<bits/stdc++.h>
using namespace std;
int dday,dmonth,dyear//老王的死亡年月日,n;
struct node{
int day,month,year,th;//儿子出生的年月日及顺序
}q[1000005];
//空行,好码风
bool cmp(node a,node b){
if(b.year<a.year) return true;
if(b.year==a.year){
if(b.month<a.month) return true;
if(b.month==a.month)
if(b.day<a.day) return true;
}
return false;
}//基于三个参数的比较
int main(){
cin>>dday>>dmonth>>dyear;
cin>>n;
for(int i=0;i<n;i++){
cin>>q[i].day>>q[i].month>>q[i].year;
q[i].th=i+1;
}
sort(q,q+n,cmp);//排序
for(int i=0;i<n;i++){
if(dyear-q[i].year>18){
cout<<q[i].th<<endl;
return 0;
}
else if(dyear-q[i].year==18&&q[i].month<dmonth){
cout<<q[i].th<<endl;
return 0;
}
else if(dyear-q[i].year==18&&q[i].month==dmonth&&q[i].day<dday){
cout<<q[i].th<<endl;
return 0;//找到直接退出
}
}
cout<<-1<<endl;//不行输出-1
return 0;
}
```