[Tin 12] Chuyển code từ C sang Pascal

Cốm187

Học sinh chăm học
Thành viên
2 Tháng ba 2017
31
16
81
21
Quảng Trị
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Đề: Một xe buýt của công ty có nhiệm vụ đón nhân viên đến trụ sở làm việc. Trên hành trình, xe buýt sẽ tiếp nhận nhân viên đứng chờ ở các điểm hẹn nếu như xe còn chỗ trống. Xe buýt có thể đỗ lại để chờ những công nhân chưa kịp đến điểm hẹn.
Cho biết thời điểm mà mỗi nhân viên đến điểm hẹn của mình và thời điểm qua mỗi điểm hẹn của xe buýt. Giả thiết rằng xe buýt đến điểm hẹn đầu tiên tại thời điểm 0 và thời gian xếp khách lên xe được bằng 0.
Xe buýt cần phải chở một số lượng nhiều nhất các nhân viên có thể được đến trụ sở. Hãy xác định khoảng thời gian ngắn nhất để xe buýt thực hiện công việc.
Dữ liệu vào từ file BUS.INP:
· Dòng đầu tiên chứa hai số nguyên dương N và M theo thứ tự là số điểm hẹn và số chỗ ngồi của xe buýt.
Dòng thứ i trong số N dòng tiếp theo chứa số nguyên ti là thời gian cần thiết để xe buýt di chuyển từ điểm hẹn i đến điểm hẹn i+1 (điểm hẹn thứ N+1 sẽ là trụ sở làm việc của công ty), số nguyên K là số lượng nhân viên đến điểm hẹn i và tiếp đến là K số nguyên là các thời điểm đến điểm hẹn của K nhân viên
Giới hạn: 1 ≤ n ≤ 200000, 1 ≤ m ≤ 20000


#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstdio>
#include <stdlib.h>

using namespace std;

const long maxmax = 250000,z=0;
long n,m,k,t,f[maxmax],a[maxmax],p,x,res;

int main()
{
scanf("%li%li",&n,&m);
f[1] = 0;
p = 0;
for (long i=1;i<=n;i++) {
scanf("%li%li",&t,&k);
f[i+1] = f + t;
for (long j=p+1;j<=p+k;j++) {
scanf("%li",&x);
a[j] = max(z,x-f);
}
p += k;
}
sort(a+1,a+p+1);
res = f[n+1]+a[m];
printf("%li",res);
return 0;
}
 

Nguyễn Thánh Tiền

Mr Favoirite 2012
Thành viên
2 Tháng mười 2010
1,931
782
324
Hà Nội
cO VUA
Đề: Một xe buýt của công ty có nhiệm vụ đón nhân viên đến trụ sở làm việc. Trên hành trình, xe buýt sẽ tiếp nhận nhân viên đứng chờ ở các điểm hẹn nếu như xe còn chỗ trống. Xe buýt có thể đỗ lại để chờ những công nhân chưa kịp đến điểm hẹn.
Cho biết thời điểm mà mỗi nhân viên đến điểm hẹn của mình và thời điểm qua mỗi điểm hẹn của xe buýt. Giả thiết rằng xe buýt đến điểm hẹn đầu tiên tại thời điểm 0 và thời gian xếp khách lên xe được bằng 0.
Xe buýt cần phải chở một số lượng nhiều nhất các nhân viên có thể được đến trụ sở. Hãy xác định khoảng thời gian ngắn nhất để xe buýt thực hiện công việc.
Dữ liệu vào từ file BUS.INP:
· Dòng đầu tiên chứa hai số nguyên dương N và M theo thứ tự là số điểm hẹn và số chỗ ngồi của xe buýt.
Dòng thứ i trong số N dòng tiếp theo chứa số nguyên ti là thời gian cần thiết để xe buýt di chuyển từ điểm hẹn i đến điểm hẹn i+1 (điểm hẹn thứ N+1 sẽ là trụ sở làm việc của công ty), số nguyên K là số lượng nhân viên đến điểm hẹn i và tiếp đến là K số nguyên là các thời điểm đến điểm hẹn của K nhân viên
Giới hạn: 1 ≤ n ≤ 200000, 1 ≤ m ≤ 20000


#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstdio>
#include <stdlib.h>

using namespace std;

const long maxmax = 250000,z=0;
long n,m,k,t,f[maxmax],a[maxmax],p,x,res;

int main()
{
scanf("%li%li",&n,&m);
f[1] = 0;
p = 0;
for (long i=1;i<=n;i++) {
scanf("%li%li",&t,&k);
f[i+1] = f + t;
for (long j=p+1;j<=p+k;j++) {
scanf("%li",&x);
a[j] = max(z,x-f);
}
p += k;
}
sort(a+1,a+p+1);
res = f[n+1]+a[m];
printf("%li",res);
return 0;
}


Sort là sắp sếp
 
Top Bottom