P7041 [NWRRC2016]King’s Heir 题解

ztjp13

2020-12-20 22:19:27

Solution

不得不说,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; } ```