#include <stdio.h> #define SIZE 20 typedef struct{ int ArrivalTime; int Duration; }CustomerType; int windows[SIZE]; int total_time; CustomerType customers[200]; int total; void BankOpen(){ int i; for(i=0; i<SIZE; i++){ windows[i] = 0; } total_time = 0; } void CustomerIn(int total){ int i = 0; while(i < total){ scanf("%d%d",&customers[i].ArrivalTime, &customers[i].Duration); i++; } } void Deals(int m, int n){ int i, j; int minTimeIndex; for(i=0; i<n; i++){ minTimeIndex = 0; for(j=1 ;j<m ;j++){ if(windows[minTimeIndex] > windows[j]){ minTimeIndex = j; } } if(windows[minTimeIndex] <= customers[i].ArrivalTime){ windows[minTimeIndex] = customers[i].ArrivalTime + customers[i].Duration; }else{ total_time += windows[minTimeIndex] - customers[i].ArrivalTime; windows[minTimeIndex] += customers[i].Duration; } } } int main(){ int m; while(scanf("%d%d",&m ,&total) != EOF){ BankOpen(); CustomerIn(total); Deals(m, total); printf("%.2lf\n", total_time*1.0/total); } return 0; } /************************************************************** Problem: 2147 User: admin Language: C Result: Accepted Time:11 ms Memory:1148 kb ****************************************************************/