炸裂,80分

P1104 生日

@[shooting__star](/user/955954) ```cpp #include<bits/stdc++.h> using namespace std; struct stu{ string name;int y,m,d,id; } s[105]; int n; bool cmp(stu a,stu b){ if(a.y==b.y){ if(a.m==b.m){ if(a.d==b.d){ return a.id>b.id; } return a.d<b.d; } return a.m<b.m; } return a.y<b.y; } int main(){ cin>>n;for(int i=0;i<n;++i) cin>>s[i].name>>s[i].y>>s[i].m>>s[i].d,s[i].id=i; sort(s,s+n,cmp); for(int i=0;i<n;++i) cout<<s[i].name<<endl; return 0; } ```
by _buzhidao_ @ 2023-12-02 20:24:56


@[shooting__star](/user/955954) 尽量不要手打排序,直接`sort`函数搞定
by _buzhidao_ @ 2023-12-02 20:25:48


@[shooting__star](/user/955954) 你说你何苦呢?非得手打排序?这题的数据范围sort又不会超时。 ```cpp #include<bits/stdc++.h> using namespace std; int n; struct v{ int nian,yue,ri,id; string ming; }a[1000000]; bool cmp(v x,v y){ if(x.nian==y.nian&&x.yue==y.yue&&x.ri==y.ri)return x.id>y.id; if(x.nian==y.nian&&x.yue==y.yue)return x.ri<y.ri; if(x.nian==y.nian)return x.yue<y.yue; return x.nian<y.nian; } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].ming>>a[i].nian>>a[i].yue>>a[i].ri; a[i].id=i; } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++)cout<<a[i].ming<<endl; return 0; } ```
by I_am_jocker @ 2023-12-02 20:53:51


|