题解
快速排序
2 条题解
-
0
#include<bits/stdc++.h> using namespace std; struct xs{ int yw,sx,yy,zf; int xh; }a[310],x; void ks(int z,int y){ int i=z,j=y; x=a[z]; if(z>=y){ return ; } while(i!=j){ while(i<j&&(a[j].zf<=x.zf||a[j].zf==x.zf&&a[j].yw<x.yw||a[j].yw==x.yw&&a[j].xh>x.xh)){ j--; } while(i<j&&(a[i].zf>=x.zf||a[i].zf==x.zf&&a[i].yw>x.yw||a[i].yw==x.yw&&a[i].xh<x.xh)){ i++; } if(i<j){ swap(a[i],a[j]); } } a[z]=a[i]; a[i]=x; ks(z,i-1); ks(i+1,y); } int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].yw>>a[i].sx>>a[i].yy; a[i].zf=a[i].yw+a[i].sx+a[i].yy; a[i].xh=i; } ks(1,n); for(int i=1;i<=5;i++){ cout<<a[i].xh<<" "<<a[i].zf<<endl; } return 0; } -
0
#include<bits/stdc++.h> using namespace std; struct xs{ int yw,sx,yy,zf; int xh; }a[310],x; void ks(int z,int y){ int i=z,j=y; x=a[z]; if(z>=y){ return ; } while(i!=j){ while(i<j&&(a[j].zf<=x.zf||a[j].zf==x.zf&&a[j].yw<x.yw||a[j].yw==x.yw&&a[j].xh>x.xh)){ j--; } while(i<j&&(a[i].zf>=x.zf||a[i].zf==x.zf&&a[i].yw>x.yw||a[i].yw==x.yw&&a[i].xh<x.xh)){ i++; } if(i<j){ swap(a[i],a[j]); } } a[z]=a[i]; a[i]=x; ks(z,i-1); ks(i+1,y); } int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].yw>>a[i].sx>>a[i].yy; a[i].zf=a[i].yw+a[i].sx+a[i].yy; a[i].xh=i; } ks(1,n); for(int i=1;i<=5;i++){ cout<<a[i].xh<<" "<<a[i].zf<<endl; } return 0; }
- 1