Я не получаю сообщение об ошибке SIGKILL на своем компьютере и на онлайн-компиляторе ideone.com
Хотя это дает SIGKILL на спой-машине, не могу понять причину
РЕДАКТИРОВАТЬ:
Программа должна использовать менее 256 МБ данных, в настоящее время она занимает около 400 МБ
Как минимизировать использование памяти, я использую только элементы либо по диагонали, либо под ней в массиве «с»
Вот код:
#include<bits/stdc++.h>
#define _ ios_base::sync_with_stdio(0);cin.tie(0);
#define r 1000000007
using namespace std;
int c[10000][10000];
int main(){_
int i,j,t;
c[0][0]=1;
for(i=1;i<10000;i++){
c[i][0]=1;
c[i][i]=1;
for(j=1;j<i;j++){
c[i][j]=c[i-1][j]+c[i-1][j-1];
if(c[i][j]>=r){
c[i][j]-=r;
}
}
}
cin>>t;
for(int f=1;f<=t;f++){
int n,k,a[10000],ans=0;
cin>>n>>k;
for(i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
for(j=k-1;j<n;j++){
ans+=((long long)a[j]*c[j][k-1])%r;
}
cout<<"Case #"<<f<<": "<<ans<<"\n";
}
return 0;
}
SPOJ налагает ограничение памяти, и ваш 2D-массив, кажется, превышает этот предел: ссылка на сайт.
Других решений пока нет …