| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Help,WA都N次了,帮忙看哈,给点测试数据,谢谢了!!!!!!!!!先按解决的问题多少排序,看最大的解决问题个数的队伍是多少
若是一 ,就不用再比较penalty points
否则再次选出几个队伍的penalty points,在排序,就可得winner了,排序中注意到下表保持原来的顺序,跟着变
代码如下:
#include<iostream.h>
#include<stdio.h>
//using namespace std;
//犯了个错误,定义计算器为cout,应为count的,因为输出流也为cout,就出现了
//F:\ACM\1581\1581.cpp(77) : error C2297: '<<' : illegal, right operand has type 'char [30]'
#define max 10000
int main()
{
int n,i,j,k=0,t,temp,count=0;//s;
char name[max][30];
int solve[max]={0},score[max]={0},submit[max][5]={0},plu[max][2]={0},flag[max]={0},flag1[max]={0};
int bscore[max]={0},bflag[max]={0};
cin>>n;
for(i=0;i<n;i++)
{
cin>>name[i];
for(j=0;j<4;j++)
{
cin>>submit[i][j]>>plu[i][j];
if(plu[i][j]!=0)
{
solve[i]++;
score[i]=score[i]+(submit[i][j]-1)*20+plu[i][j];//多写了个加左边score[i]+
flag[i]=i;
}
}
}
//冒泡排序
for(i=0;i<n;i++)
{
for(j=i;j<n-i-1;j++)
{
if(solve[i]>solve[i+1])
{
temp=solve[i];
solve[i]=solve[i+1];
solve[i+1]=temp;
//下标跟随
t=i;
flag[i]=flag[i+1];
flag[i+1]=i;
}
}
/*
for(j=i;j<n-i-1;j++)
{
if(score[i]>slove[i+1])
{
temp=score[i];
score[i]=score[i+1];
score[i+1]=temp;
//下标跟随
t=i;
flag1[i]=flag1[i+1];
flag1[i+1]=i;
}
}
*/
}
for(i=n-2;i>=0;i--)
{
if(solve[n-1]==solve[i])
{
//非i=k;
k=i;
count++;
}
if(solve[n-1]>solve[i])
break;
}
if(0==count)
{
//s=flag[n-1];
// cout<<name[s]<<" "<<solve[n-1]<<" "<<score[s]<<endl;
//puts(name[s]);
// cout<<" "<<solve[n-1]<<" "<<score[s]<<endl;
cout<<name[flag[n-1]]<<" "<<solve[n-1]<<" "<<score[flag[n-1]]<<endl;
}
else
{
j=k+count;
for(i=0;i<count;i++)
{
bflag[i]=flag[j];
bscore[i]=score[flag[j]];
j--;
}
for(i=0;i<count;i++)
{
for(j=i;j<count-i-1;j++)
{
if(bscore[i]>bscore[i+1])
{
temp=bscore[i];
bscore[i]=bscore[i+1];
bscore[i+1]=temp;
//下标跟随
t=i;
bflag[i]=bflag[i+1];
bflag[i+1]=i;
}
}
}
cout<<name[bflag[0]]<<" "<<solve[n-1]<<" "<<score[bflag[0]]<<endl;//<<score[0]<<endl;
//cout<<name[bflag[0]]<<" "<<solve[bflag[0]]<<" "<<bscore[bflag[0]]<<endl;//<<score[0]<<endl;
// s=bflag[0];
// puts(name[s]);
// cout<<" "<<solve[s]<<" "<<score[0]<<endl;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator