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

wa死了!!冰天雪地裸地跪求高手指正错误!!!

Posted by testSky at 2007-03-23 12:05:22 on Problem 1064
#include <stdio.h>
#include <stdlib.h>

long	buf[100000];
int	countElement=0;
int	K;

const int isEqual=0;
const int tooSmall=1;
const int tooLarge=2;

int iterative(long l){
	int	total=0;
	int	i;
	for(i=0;i<countElement;i++){
		total+=buf[i]/l;
	}
	if(total>K)
		return tooLarge;
	else if(total==K){
		return isEqual;
	}else	
		return tooSmall;
}
int main(){
	int	N;
	int	i,j,tag,result;
	char	tmp[30];
	char*	ptr;
	long	min,a,b,l,sum;
	scanf("%d %d",&N,&K);
	
	min=1000000;
	sum=0;
	for(i=0;i<N;i++){
		memset(tmp,0,sizeof(tmp));
		scanf("%s",&tmp);
		ptr=strchr(tmp,'.');
		strncpy(ptr,ptr+1,2);
		ptr[2]='\0';
		buf[countElement]=atol(tmp);
		if(min>buf[countElement]){
			min=buf[countElement];
		}
		sum+=buf[countElement];
		countElement++;
		
	}
	int	store=0;
	if(sum<K){
		result=0;
	}else{
		a=1;
		b=min;	
		result=0;
		while(a<=b){
			l=(a+b)/2;
			if(l==0){
				break;
			}
			tag=iterative(l);
			if(tag==isEqual){
				result=l;
				a=l+1;
			}else if(tag==tooLarge){
				a=l+1;
				result=l;
			}else if(tag==tooSmall){
				b=l-1;
			}
		}
	}
	printf("%.2lf\n",(double)result/100);
	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