题目如图,我运行结果和题目一模一样,自己换了几组数据也没问题,但OJ报答案错误,我的方法是定义三个数组,分别储存a,b,的值和序号,先找出a最大的一组然后将这一组在三个数组中的值都移到第一位,其他组依次往后推一位,最后输出储存序号的数组,以下是代码
#include<iostream>
using namespace std;
int main()
{int m,n,d,e,f,g,h,a[1000],b[1000],c[1000];
cin>>n;
for (f=0;f<n;f++)
{cin>>a[f]>>b[f];
c[f]=f+1;}
for (f=0;f<n-1;f++)
{for (d=f+1;d<n;d++)
{if (a[f]<a[d])
{m=d;
e=a[d];
g=b[d];
h=c[d];
for (;d>f;d--)
{a[d]=a[d-1];
b[d]=b[d-1];
c[d]=c[d-1];}
a[f]=e;
b[f]=g;
c[f]=h;
d=m;}
else if (a[f]==a[d])
{if (b[f]>b[d])
{m=d;
e=a[d];
g=b[d];
h=c[d];
for (;d>f;d--)
{a[d]=a[d-1];
b[d]=b[d-1];
c[d]=c[d-1];}
a[f]=e;
b[f]=g;
c[f]=h;
d=m;}}
else
continue;
}}
for (e=0;e<n-1;e++)
cout<<c[e]<<" ";
cout<<c[n-1];}