Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

要使用高精度吗?

Posted by Move at 2007-09-22 17:41:07 on Problem 3262
我用了4个64位来存储
还是WA。

以下是我的代码,请指教。

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;

#define N 100006
#define M 100000000

typedef struct
{
	__int64 d;
	__int64 t;
}cow;
cow a[N];

bool cmp(cow a,cow b)
{
	if(a.d==b.d) return a.t < b.t;
	else return a.d > b.d;
}

int main()
{
	int i,j,n;
	__int64 sum[4],ti;
	__int64 t,d;

	memset(a,0,sizeof(a));
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%I64d%I64d",&t,&d);
		a[i].t=t;
		a[i].d=d;
	}
	sort(a,a+n,cmp);
	ti=0;
	for(i=0;i<4;i++)
		sum[i]=0;
	for(i=0;i<n;i++)
	{
		sum[0]+=a[i].d*ti;
		for(j=0;j<3;j++)
		{
			if(sum[j]>=M)
			{
				sum[j+1]+=sum[j]/M;
				sum[j]=sum[j]%M;
			}
		}
		ti+=2*a[i].t;
	}

	if(sum[3]!=0) printf("%I64d%08I64d%08I64d%08I64d\n",sum[3],sum[2],sum[1],sum[0]);
	else if(sum[2]!=0) printf("%I64d%08I64d%08I64d\n",sum[2],sum[1],sum[0]);
	else if(sum[1]!=0) printf("%I64d%08I64d\n",sum[1],sum[0]);
	else printf("%I64d\n",sum[0]);
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator