Rope Escape (Fuori memoria)

Mi da l’errore di quando va fuori memoria e non riesco a capire dove sia l’errore qualcuno mi può dare una mano? Vi lascio qui di seguito il codice.
Grazie in anticipo;

#include <bits/stdc++.h>
using namespace std;
int main(){
	int N;
	int a;
	cin>>N;
	vector<int>A;
	int cont=0;
	for(int i=0;i<N;i++){
		cin>>a;
		if(find(A.begin(),A.end(),a)==A.end()){
			cont++;
		}
		A.push_back(a);
	}
	vector<vector<int> >v(cont);
	for(int i=0;i<N;i++){
		cin>>a;
		v[A[i]].push_back(a);
	}
	for(int i=0;i<cont;i++){
		sort(v[i].begin(),v[i].end());
	}
	long long int min=0;
	for(int i=0;i<cont;i++){
		for(int j=0;j<v[i].size()-1;j++){
			min+=v[i][j];
		}
	}
	cout<<min;
}

Salve!
Non capisco bene l’idea del cont, a cosa serve dichiarare v lungo cont se poi fai v[A[i]] dove A[i] può essere anche N-1?
Credo che l’errore di memoria sia causato da questo.

1 Mi Piace

Grazie del consiglio ho cambiato la soluzione adesso va fuori memoria solo in due casi ma in altrettanti casi ma da output non corretto hai qualche altro consiglio, ti lascio il codice:

#include <bits/stdc++.h>
using namespace std;
int main(){
	int N;
	int a;
	cin>>N;
	vector<int>A;
	int cont=0;
	long long int min=0;
	vector<vector<int> >v(N);
	for(int i=0;i<N;i++){
		cin>>a;
		A.push_back(a);
	}
	for(int i=0;i<N;i++){
		cin>>a;
		v[A[i]].push_back(a);
	}
	for(int i=0;i<N;i++){
		sort(v[i].begin(),v[i].end());
	}
	for(int i=0;i<N;i++){
		if(v[i].size()!=0){
			for(int j=0;j<v[i].size()-1;j++){
				min+=v[i][j];
			}
		}
	}
	cout<<min;
}

Ah scusami, colpa mia che ho detto che A[i] può essere anche N-1, avrei dovuto dire che può essere anche N, infatti nelle assunzioni 0≤P_i≤N.
Considerando questo dettaglio fa 100 :wink:

Giusto non lo avevo notato grazie mille

1 Mi Piace