1 #include <stdio.h> 2 #include <string.h> 3 #define bool char 4 int main(){ 5 char in[256]; 6 char* p; 7 unsigned begin,end; 8 int gap; 9 long long size,out,tmp; 10 bool start,started; 11 int i; 12 const char msg[4]="KMG"; 13 char now; 14 while(1){ 15 if(gets(in)==NULL){ 16 return 0; 17 } 18 start=0,started=0; 19 while(!started){ 20 if(gets(in)==NULL){ 21 return 0; 22 } 23 for(i=0;in[i]!='\0';i++){ 24 if(in[i]=='`'){ 25 start=1,started=1; 26 continue; 27 }else if(in[i]=='\''){ 28 start=0; 29 continue; 30 } 31 if(start){ 32 putchar(in[i]); 33 } 34 } 35 } 36 putchar(':'); 37 while(1){ 38 gets(in),strtok(in," "); 39 if(strcmp(in,"BEGIN:")==0){ 40 p=strtok(NULL," "); 41 sscanf(p,"%u",&begin); 42 break; 43 } 44 } 45 gets(in),p=strtok(in," "),p=strtok(NULL," "),sscanf(p,"%u",&end); 46 gets(in),p=strtok(in," "),p=strtok(NULL," "),sscanf(p,"%I64d",&size); 47 gap=end-begin; 48 printf(" %d:",gap/3600); 49 gap%=3600; 50 printf("%02d:",gap/60); 51 gap%=60; 52 printf("%02d",gap); 53 if(size<1024){ 54 printf(" %I64d B\n",size); 55 continue; 56 } 57 for(i=0,tmp=1024,now=msg[i];;i++,tmp*=1024,now=msg[i]){ 58 if(i==3){ 59 now='G'; 60 printf(" %I64d %cB\n",out,now); 61 break; 62 } 63 if((out=size/tmp)<1024){ 64 if(size%tmp >= tmp/2){ 65 out++; 66 if(out>=1024){ 67 continue; 68 } 69 } 70 printf(" %I64d %cB\n",out,now); 71 break; 72 } 73 } 74 } 75 return 0; 76 }