Bài tập trên SPOJ bị lỗi sigsegv

Em có bài contest: https://www.spoj.com/ACMPTIT/problems/P191SUMB/
Đây là code của em:

#include<bits/stdc++.h>
using namespace std;
struct data{
	int vt,trinhdo;
	long long getmoney;
};
struct baitap{
	int dokho;
	long long tien;
};
int cmp1(data a,data b){
	if(a.trinhdo>b.trinhdo) return 0;
	if(a.trinhdo==b.trinhdo&&a.vt>b.vt) return 0;
	return 1;
}
int cmp2(baitap a,baitap b){
	if(a.dokho>b.dokho) return 0;
	return 1;
}
int cmp3(data a,data b){
	if(a.vt>b.vt) return 0;
	return 1;
}
int main(){
	int n,k,i,j;
	cin>>n>>k;
	data *a=new data [100000];
	baitap *b=new baitap[100000];
	for(i=0;i<n;i++){
		cin>>a[i].trinhdo;
		a[i].vt=i;
	}
	sort(a,a+n,cmp1);
	for(i=0;i<k;i++){
		cin>>b[i].dokho>>b[i].tien;
	}
	sort(b,b+n,cmp2);
	i=0;j=0;
	long long temp=0;
	while(i<n&&j<k){
		if(a[i].trinhdo>=b[j].dokho){
			temp+=b[j].tien;
			j++;
		}
		else{
			a[i].getmoney=temp;
			i++;
		}
	}
	for(;i<n;i++){
		a[i].getmoney=temp;
	}
	sort(a,a+n,cmp3);
	for(i=0;i<n;i++) cout<<a[i].getmoney<<" ";
}

Dù cung cấp đủ mảng sao khi nộp vẫn bị báo lỗi sigsegv ạ?

Sao không new data[n]new baitap[k] mà dùng số cố định 100000 chi cho tốn bộ nhớ?

b+n hay là b+k?

3 Likes

e cũng thử dùng new với vector rồi nhưng sai ở đấy thật thanks bác :v

ơ nhưng nộp vẫn bị lỗi sigsegv :((

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?