2016-10-04 11 views
0

最近、私はthisの問題を練習していました。ここでは、幼虫によって無傷のまま残されている葉の総数を計算する必要があります。何枚の葉が無傷で残っているかを計算するコード

幸いにも私はコードをかなり速く、それがRuntime ErrorをIARCS裁判官によって与えたことを知りました。ここで

は、特定のテストケースである:ここで

762744433 19 
96412 40852 19611 563380 236733 559627 750968 413673 300332 65 682403 441221 180068 668364 493413 443706 613246 715846 728157 

はコードです:

#include <iostream> 
#include <vector> 
#include <algorithm> 

int main (int argc, char const* argv[]) 
{ 
    long long n , k; 
    std::cin >> n >> k; 
    long long caterpillars[k]; 
    std::vector<long long>v; 
    for(int i=0;i<k;i++){ 
     std::cin >> caterpillars[i]; 
    } 
    for(int i=0;i<k;i++){ 
     for(int j=0;caterpillars[i]*j +1 <= n;j++){ 
      int temp = caterpillars[i]*j +1; 
      v.push_back(temp); 
     } 
    } 
    sort(v.begin(),v.end()); 
    int number = 0; 
    long long prev = 0; 
    for(int i=0;i<v.size();i++){ 
     if(v[i] != prev){ 
      number++; 
     } 
     prev = v[i]; 
    } 
    std::cout << n - number << std::endl; 
    return 0; 
} 

しかし、驚くべき部分は、コードが私のPCに正確な答えを与えている、GDBはまた同じことを行いますしかし、そこそこのIARCS裁判官がいます。

誰でも私を助けることができますか?

+2

long long caterpillars [k];は標準ではないので、コンパイルしないでください。 'std :: vector'と置き換えるべきです。 – NathanOliver

+0

誰がコンパイルしないと言ったのですか? –

+1

私はそうすべきではないと言った。警告が表示されていない場合に許可するコンパイラがあります。この["working"](http://coliru.stacked-crooked.com/a/86d08a258d1ae8f5)と["non-working"](http://coliru.stacked-crooked.com/a/1654f30c7c6db9f3)の例を参照してください – NathanOliver

答えて

0

裁判官によって指定されたメモリ制限は64 MBです。問題を解決するために使用している手順でも、消費される領域が64 MB未満になることは保証されません。実際には、多くのテストケースで限界を超えます。例:1000000000 1 2.

ほとんどの競争のあるプログラミングウェブサイトでは、ランタイムエラーとメモリ制限を区別しています。 IARCSもそうしている場合は、エラーの理由が他にもあるはずです。

関連する問題