목차
1. 문제설명
2. 소스코드
2. 소스코드
본문내용
);
s[i].cpu = input;
s[i].waiting = 0;
s[i].flag = 0;
}
}
void sorting(int num)
{
int i,j,temp_id,temp_cpu,temp_arrive;
for(i=0;i
for(j=0;j
if(s[j].arrive > s[j+1].arrive)
{
temp_id = s[j].id;
temp_cpu = s[j].cpu;
temp_arrive = s[j].arrive;
s[j].id = s[j+1].id;
s[j].cpu = s[j+1].cpu;
s[j].arrive = s[j+1].arrive;
s[j+1].id = temp_id;
s[j+1].cpu = temp_cpu;
s[j+1].arrive = temp_arrive;
}
else if(s[j].arrive == s[j+1].arrive && s[j].cpu> s[j+1].cpu)
{
temp_id = s[j].id;
temp_cpu = s[j].cpu;
temp_arrive = s[j].arrive;
s[j].id = s[j+1].id;
s[j].cpu = s[j+1].cpu;
s[j].arrive = s[j+1].arrive;
s[j+1].id = temp_id;
s[j+1].cpu = temp_cpu;
s[j+1].arrive = temp_arrive;
}
else if(s[j].arrive == s[j+1].arrive && s[j].cpu== s[j+1].cpu && s[j].id > s[j+1].id)
{
temp_id = s[j].id;
temp_cpu = s[j].cpu;
temp_arrive = s[j].arrive;
s[j].id = s[j+1].id;
s[j].cpu = s[j+1].cpu;
s[j].arrive = s[j+1].arrive;
s[j+1].id = temp_id;
s[j+1].cpu = temp_cpu;
s[j+1].arrive = temp_arrive;
}
}
}
void calcul(int num)
{
int i = s[0].arrive;
int end_time = i + s[0].cpu;
s[0].flag = 1;
int j=0;
for(;;i++)
{
if(isit_end(num))
break
else if(i==end_time){
if(isit_pro(i,num)){
j = find_next(i,num);
end_time +=s[j].cpu;
s[j].waiting = i - s[j].arrive;
s[j].flag = 1;
}
}
else if(i>end_time){
if(isit_pro(i,num)){
j=find_next(i,num);
end_time=s[j].arrive + s[j].cpu;
s[j].flag = 1;
}
}
}
}
int find_next(int now_time, int num)
{
int i,temp=100000000,posi=51,wit=0;
for(i=0;i
if(s[i].flag != 1 && s[i].arrive <= now_time){
if(s[i].cpu < temp){
temp = s[i].cpu;
posi = s[i].id;
wit = i;
}
else if(s[i].cpu == temp && s[i].id < posi){
temp = s[i].cpu;
posi = s[i].id;
wit = i;
}
}
}
return wit;
}
int isit_end(int num)
{
int i;
for(i=0;i
if(s[i].flag == 0)
return 0;
return 1;
}
void wait_plus(int now_time, int num)
{
int i;
for(i=0;i
if(now_time > s[i].arrive && s[i].flag == 0){
s[i].waiting++;
}
}
}
int isit_pro(int now_time,int num)
{
int i;
for(i=0;i
if(now_time >= s[i].arrive && s[i].flag == 0)
return 1;
}
return 0;
}
void display(FILE *output_fp,int num)
{
int i,waiting=0;
for(i=1;i
waiting+=s[i].waiting;
}
fprintf(output_fp,"%d",waiting);
}
s[i].cpu = input;
s[i].waiting = 0;
s[i].flag = 0;
}
}
void sorting(int num)
{
int i,j,temp_id,temp_cpu,temp_arrive;
for(i=0;i
{
temp_id = s[j].id;
temp_cpu = s[j].cpu;
temp_arrive = s[j].arrive;
s[j].id = s[j+1].id;
s[j].cpu = s[j+1].cpu;
s[j].arrive = s[j+1].arrive;
s[j+1].id = temp_id;
s[j+1].cpu = temp_cpu;
s[j+1].arrive = temp_arrive;
}
else if(s[j].arrive == s[j+1].arrive && s[j].cpu> s[j+1].cpu)
{
temp_id = s[j].id;
temp_cpu = s[j].cpu;
temp_arrive = s[j].arrive;
s[j].id = s[j+1].id;
s[j].cpu = s[j+1].cpu;
s[j].arrive = s[j+1].arrive;
s[j+1].id = temp_id;
s[j+1].cpu = temp_cpu;
s[j+1].arrive = temp_arrive;
}
else if(s[j].arrive == s[j+1].arrive && s[j].cpu== s[j+1].cpu && s[j].id > s[j+1].id)
{
temp_id = s[j].id;
temp_cpu = s[j].cpu;
temp_arrive = s[j].arrive;
s[j].id = s[j+1].id;
s[j].cpu = s[j+1].cpu;
s[j].arrive = s[j+1].arrive;
s[j+1].id = temp_id;
s[j+1].cpu = temp_cpu;
s[j+1].arrive = temp_arrive;
}
}
}
void calcul(int num)
{
int i = s[0].arrive;
int end_time = i + s[0].cpu;
s[0].flag = 1;
int j=0;
for(;;i++)
{
if(isit_end(num))
break
else if(i==end_time){
if(isit_pro(i,num)){
j = find_next(i,num);
end_time +=s[j].cpu;
s[j].waiting = i - s[j].arrive;
s[j].flag = 1;
}
}
else if(i>end_time){
if(isit_pro(i,num)){
j=find_next(i,num);
end_time=s[j].arrive + s[j].cpu;
s[j].flag = 1;
}
}
}
}
int find_next(int now_time, int num)
{
int i,temp=100000000,posi=51,wit=0;
for(i=0;i
if(s[i].cpu < temp){
temp = s[i].cpu;
posi = s[i].id;
wit = i;
}
else if(s[i].cpu == temp && s[i].id < posi){
temp = s[i].cpu;
posi = s[i].id;
wit = i;
}
}
}
return wit;
}
int isit_end(int num)
{
int i;
for(i=0;i
return 0;
return 1;
}
void wait_plus(int now_time, int num)
{
int i;
for(i=0;i
s[i].waiting++;
}
}
}
int isit_pro(int now_time,int num)
{
int i;
for(i=0;i
return 1;
}
return 0;
}
void display(FILE *output_fp,int num)
{
int i,waiting=0;
for(i=1;i
}
fprintf(output_fp,"%d",waiting);
}
소개글