排序问题:
#include<iostream>
#include<algorithm>
using namespace std;
struct period{
double average;
int periodTime,a,b;
};
bool cmp(period value1,period value2){
if (value1.average!=value2.average)
return value1.average>value2.average;
else{
if(value1.periodTime!=value2.periodTime)
return value1.periodTime>value2.periodTime;
else
return value1.b<value2.b;
}
};
int main(){
int N=0,quarterCount=0,printcount=0,minquarter=0,j=0,count=0;
period Period[30000];
cin>>N;
int quarter[400];
for(int i=0;i<N;++i){
cin>>quarterCount>>printcount>>minquarter;
count=0;
for(j=0;j<quarterCount;++j){
cin>>quarter[j];
}
j=0;
while(j+minquarter<=quarterCount){
for(int k=minquarter;k+j<=quarterCount;++k){
int sum=0;
for(int m=j;m<k+j;++m)
sum += quarter[m];
Period[count].periodTime=k;
Period[count].a= j+1;
Period[count].b= j+k;
Period[count].average=(sum*1.0)/k;
++count;
}
++j;
}
if(count==1){
cout<<"Result for run "<<i+1<<':'<<endl;
cout<<1<<'-'<<quarterCount<<endl;}
else{
sort(Period,Period+ count,cmp);
cout<<"Result for run "<<i+1<<':'<<endl;
for(j=0;j<printcount;++j)
cout<<Period[j].a<<'-'<<Period[j].b<<endl;
}
}
return 0;
}