2013-11-14 3 views
1

я не получаю ошибку SIGKILL на моей машине, и ни на ideone.com онлайна компилятора Хотя это дает SIGKILL на SPOJ машине, не может выяснить причины EDIT: Программа должна использовать менее 256 МБ данных, в настоящее время она занимает около 400MB Как я минимизировать использование памяти, я использую только те элементы, либо по диагонали или под ним в массиве «с» Вот код:любопытного SIGKILL ошибка

#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; 
} 
+0

следующий вопрос: это проект эйлер? щедрость для тех, кто ретро инженеров проблема #? :) – Thomas

+0

Ха-ха! Томас! Вы на правильном пути;), но могли бы вы помочь мне выяснить, где ошибка? – user103260

+0

@Thomas: Я подозреваю, что googling 1000000007 может быть путем, если вы хотите выяснить проблему. :) – NPE

ответ

1

SPOJ налагает ограничение на память, и ваш 2D-массив превышает этот предел: link.

+0

@ user103260: Как так? Вы говорите, что 'int' имеет ширину в один байт? – NPE

+0

О, да, извините, его 400 MB – user103260

+0

Итак, как мне свести его к минимуму? Потому что я использую только нижние диагональные элементы 2d-массива – user103260

 Смежные вопросы

  • Нет связанных вопросов^_^