duclongbk

vu long

Đóng góp: 0

Ngày sinh: 25/03/1993

Đăng ký: 22/01/2016

Lần đăng nhập cuối: 22/01/2016


Kết nối tài khoản

VOJ: Chưa kết nối

Làm bài trên Spoj

Chào mọi người. Mình mới biết spoj nên vào làm thử. Chạy mãi mà nó ko cho cái gì. Có lẽ là mình không biết cách post theo yêu cầu của đề chăng. Mọi người ai rảnh xem vấn đề ở đâu với nhé. Bài BUS. CODE C++:


#include<iostream>
#include<stdlib.h>
using namespace std;

struct timepass {
    int time;
    struct timepass *next;
};

struct bus_node {
    int time_leave;
    int number_pas;
    timepass *passenger;
};

int min(int x, int y) {
    return ((x > y)&&(y>0)) ? y : x;
}

 

timepass *creat_timewait(int time) {
    timepass *node = (timepass*)malloc(sizeof(timepass));
    node->time = time;
    node->next = NULL;
    return node;
}


bus_node **nhapdulieu(int numbus) {

    bus_node **node = (bus_node**)calloc(numbus, sizeof(bus_node*));
    for (int i = 0; i < numbus; i++)
    {
        node[i] = (bus_node*)malloc(sizeof(bus_node));
    }
     
    timepass *p=(timepass*)malloc(sizeof(timepass));
    int temp = 0;
    int time = 0;

    for (int i = 0; i < numbus; i++)
    {
        cout << "-Thoi gian di chuyen tu diem bus " << i << " den diem " << i + 1 << " : ";
        cin >> temp;
        node[i]->time_leave = temp;
        cout << "-So luong hanh khach cho tai diem bus " << i << " : ";
        cin >> temp;
        node[i]->number_pas = temp;
        for (int j = 0; j < temp; j++)
        {
            cout << "\t-Nhap thoi diem den cua hanh khach thu " << j + 1 << " : ";
            cin >> time;
            if (j == 0) {
                p = creat_timewait(time);
                node[i]->passenger = p;
                continue;
            }
            p->next = creat_timewait(time);
            p = p->next;
        }
    }


    return node;
}

int chuanhoa(bus_node **node, int numbus,int &timecost) {
    timepass *p;
    int timemin = 9999;
    for (int i = 1; i < numbus; i++)
    {
        p = node[i]->passenger;
        timecost += node[i-1]->time_leave;
        while (p != NULL)
        {
            (p->time) -= timecost;
            timemin=min(timemin, (p->time));
            p = p->next;
        }
    }

    timecost += node[numbus-1]->time_leave;
    return timemin;
}

int timecost_min(bus_node **node,int numbus,int numchair,int &timecost,int timemin) {

    timepass *p;
    
    for (int i = 0; i < numbus; i++)
    {
        p = node[i]->passenger;
        while (p != NULL)
        {
            if ((p->time) == 0)
            {
                numchair--; 
            }
            (p->time) -= timemin;
            p = p->next;
        }
    }

    if (numchair <= 0) return timecost;
    timecost += timemin;
    return timecost_min(node, numbus,numchair, timecost, timemin);
}


int main() {
    int numbus = 0;
    int numchair = 0;
    int timemin = 99999;
    int timecost = 0;
    cout << "Nhap so luong diem bus: ";
    cin >> numbus;
    cout << "Nhap so luong ghe: ";
    cin >> numchair;
    
    bus_node **node = nhapdulieu(numbus);
    timepass *p,*p1;
    
    timemin = chuanhoa(node, numbus, timecost);
    timecost=timecost_min(node, numbus, numchair, timecost, timemin);
    cout << "timecost_min: " << timecost;
    

    for (int i = 0; i < numbus; i++)
    {
        p = node[i]->passenger;
        while (p != NULL)
        {
            p1 = p;
            p = p->next;
            free(p1);
        }
    }
    free(node);
    cout << "\n___________________\n";
    system("pause");
    return 0;
}

Mình chạy trên máy mình được mà khi nộp bài k biết bị sao. Mình làm trên ViSual 2015