Codice apparentemente funzionante. (Beta Release)

Salve a tutti,stavo provando a fare esercizio Beta Release e il codice sembra funzionare però quando invio il codice la maggior parte mi restituisce output sbagliato e il restante output giusto, ho provato a modificare if finale del codice la situazione è cambiata ma di poco. (lo sto scrivendo in c++)

#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
vector<int> array;
int tot,i=0;
cin>>tot;
array.resize(tot);
 
    for(int k=0;k<tot;k++){
        cin>>array[k];
    }
    
for(int n = 0; n < tot; n++){
    for(int j = n+1; j < tot; j++){
      if(array[n] == array[j]){
        i++;
        }
    }
 
 
    if(i>=2){
        cout<<"YES";
    }else cout<<"NO";
}

Cosa succede con il seguente input?

3
1 1 1

mi restituisce YES

Esatto, ma se non sbaglio dovrebbe restituire NO, perchè 1 potrebbe essere l’id di Giorgio

quindi dovrei fare un controllo se lo stesso numero ricompare più di due volte?

Non necessariamente solo questo, ma sicuramente devi rivedere la logica dietro alla tua soluzione

1 Mi Piace

Il problema ti chiede di vvedere se c’è qualcuno al di fuori di giorgio che ha più accessi ad un gioco,ogni giocatore è identificato da un numero, ovviamente a noi non interessa quale sia giorgio, quindi la prima volta che trovi una coppia di numeri simili, la memorizzi, dopo aver fatto ciò imponi un altra condizione dicendo che se il valore del vettore è uguale al numero di giacomo, allora diminuisci, altrimenti lascialo li

#include <bits/stdc++.h>
using namespace std;

int main(){
	int n,c=0,g=0;
	cin>>n;
	int v[n];
	for(int i=0;i<n;i++){
		cin>>v[i];
	}
	sort(v,v+n);
	for(int i=0;i<n;i++){
		if(v[i]==v[i+1]){
			c++;
			if(c==1){
				g=v[i];
			}
		}
		if(v[i]==g && c==2){
			c--;
		}
	}
	if(c<=1){
		cout<<"NO";
	}
	else{
		cout<<"YES";
	}	
	return 0;
}

(il sort serve per non utilizzare un for innestato per la ricerca)