2011-10-26 7 views
0

私は「二国間」Spotifyはパズルを解くしようとしていますがここで見つける:http://www.spotify.com/us/jobs/tech/bilateral-projects/無効な関数、Spotifyはテックパズル

を、私は私のプログラムでテストの束を実行していると私は正しい出力を得るように見える、しかし、提出時にそれは、パズルジャッジは私に "不正な機能"と伝えます。

誰かが自分のコードを見て、このエラーの原因になっているように見えるかどうかを知りたいと思っていました。私には不審な

#include <cstdlib> 
#include <iostream> 

using namespace std; 
struct idnumber 
{ 
    int num; 
    int count;  
}; 
struct team 
{ 
     int id1; 
     int id2; 
}; 
void solve(team *team, int size); 
bool duplicate(idnumber id1, idnumber id2[], int size); 


int main(int argc, char *argv[]) 
{ 
    int m=0; 
    string input; 
    team * teams; 
    cout<<"Number of teams: "; 
    while(!(cin >> m) || cin.peek() != '\n' || m < 1 || m > 10000) 
      { 
       cout << "\n\nPlease enter a valid number of teams: "; 
       cin.clear(); 
       cin.ignore();    
      } 
    cin.clear(); 
    cin.ignore(); 
    teams = new team[m]; 
    for (int i=0;i<m;i++) 
    { 
     cout<<"IDs for team " <<i+1 <<": "; 
     cin >> teams[i].id1; 
     cin >> teams[i].id2; 

    } 
    solve(teams, m); 
    delete teams; 
    system("PAUSE"); 
    return EXIT_SUCCESS; 
} 

void solve(team *teams,int size) 
{ 
    int p=0,j=0, size2 = size*2, tempnum=size,count=0; 
    idnumber stockholm[size],london[size],tempid,tempid2[size],idlist[size2],id[size2]; 
    const int FRIEND = 1009; 

    int temp[size],temp2[size]; 

    for (p=0;p<size;p++) 
    { 
     stockholm[p].num = teams[p].id1; 
     stockholm[p].count = 0; 
     london[p].num = teams[p].id2; 
     london[p].count = 0; 
    } 

    for (p=0;p<size;p++) 
    { 
     temp[p] = stockholm[p].num; 
     temp2[p] = london[p].num; 
    } 

    for (p=0;p<size;p++) 
    { 
     for(j=0;j<size;j++) 
     { 
      if (stockholm[p].num == temp[j]) 
       stockholm[p].count++; 

      if (london[p].num == temp2[j]) 
       london[p].count++;     
     } 
    } 

    for(p=0;p<size;p++) 
    { 
     id[p] = stockholm[p]; 
     id[p+size] = london[p];    
    } 

    for(p=0;p<=size2;p++) 
    { 
     for(j=0;j<size2-1;j++) 
     { 
      if(id[j+1].count > id[j].count || ((id[j+1].count == id[j].count) && (id[j+1].num == FRIEND))) 
      { 
       tempid = id[j]; 
       id[j] = id[j+1]; 
       id[j+1] = tempid; 
      } 
     }     
    } 

    for(p=0;p<size2;p++) 
    { 
     idlist[p].count = 0; 
     idlist[p].num = 9999;  
    } 

    for(p=0;p<size2;p++) 
    { 
      if(!duplicate(id[p], idlist, size2)) 
      { 
       if(count<size2) 
       { 
       idlist[count] = id[p]; 
       count++; 
       } 
      }      
    } 
    for(p=0;p<size2;p++) 
     count=0; 
     while(tempnum > 0) 
     { 
      tempnum -= idlist[count].count; 
      count++;   
     } 

     cout<<count<<"\n"; 
     for(p=0;p<count;p++) 
     cout<<idlist[p].num<<"\n"; 
} 


bool duplicate(idnumber id1, idnumber id2[], int size) 
{ 
    bool flag = false; 
    for(int i=0;i<size;i++) 
    { 
    if(id1.num == id2[i].num) 
    {      
     flag = true; 
    } 
    if(flag) 
     break; 
    } 
    return flag; 
} 
+1

"system()"を呼び出せますか? –

+1

'system'への呼び出しが許可されていない可能性がありますか? – marnir

答えて

1

唯一のものは、次のとおりです。

システム( "PAUSE");

あなたのプログラムが完了すると、あなたのプログラムが一時停止するとは思わないかもしれません。

+1

誰かが悪意のある行為をしようとしている可能性があるので、単に「システム」を無効にする可能性が高いと思っています。それを完全に禁止するのは簡単です – marnir

関連する問題