| ||||||||||
| 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 | |||||||||
测试了N组数据都没问题,但是依然WAWA。。。#include<stdio.h>
#define MAX 20005
#define M 65530
int main()
{
__int64 cost=0;//某位大虾说这里必须要用64位整型才能ac
int N;
long int a[MAX]={0};//存放输入数据
int i,j;
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%ld",&a[i]);
}
long int m1,m2;
int x1,x2;
for(i=N;i<2*N-1;i++)
{
m1=M;
m2=M;
x1=0;
x2=0;
for(j=0;j<i;j++)
{
if(a[j]<m1&&a[j]!=-1)//选出两个最小的值
{
m2=m1;
x2=x1;
m1=a[j];
x1=j;
}
else if(a[j]<m2&&a[j]!=-1)//同上
{
m2=a[j];
x2=j;
}
}
a[x1]=-1;//将用过的值标记
a[x2]=-1;
a[i]=m1+m2;//记录a[N]到a[2*N-2]的值,就是需要加的值
cost+=a[i]; //每轮更新cost
}
printf("%I64d\n",cost);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator