Aiuto duplicato mancante

Volevo un aiuto sul codice perchè c’è un ciclo non corretto

#include <iostream>
#include <math.h>
#include <algorithm>
using namespace std;
int N;	
int main() { 
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
cin>>N;
int P[2*N-2];
for (int i=0;i<2*N-2;i++)  P[i]=0;
for (int i=0;i<2*N-2;i++)  
{ cin>>P[i];}
int mancante=0;
sort(P,P+(2*N-2)); //ORDINO L'ARRAY
for (int i=0;i<2*N-2;i=i+2) // CONTROLLO OGNI COPPIA 
{ if (P[i]!=P[i+1]) // SE TROVO UNA COPPIA DOVE 
                    // GLI ELEMENTI NON COINCIDONO
      { mancante =P[i];    break; // ESCO DAL CICLO
	  } }
cout<<mancante;
return 0;
}

Nell’input sono presenti 2N-1 interi, non 2N-2. Altra cosa, non so se dichiarare P dentro il main vada bene per N <= 10^5, probabilmente va fuori dalla memoria allocata per lo stack. Il modo “giusto” sarebbe quello di allocarlo con malloc, ma creare un array globale della dimensione massima richiesta va più che bene in gara.

3 Mi Piace