Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
buenas galera..
entaum to tentando fazer um desafio do site do spoj q chama eleições..
fiz o algoritmo normal, soh q do jeito q fiz da TLE, ow seja extrapola o tempo limite de 1s.
fiz em java usando ArrayList e com isso verificando o numero e ocorrencias de um determinado numero; soh q se em C num passo em java a leitura é lenta de + e deu TLE tbm..
me deram a dica de usar o stl map do C++. soh q naum sei como contar o numero de ocorrencias de um numero.
vejam oq tentei até agora:
#include <iostream>
#include <map>
#include <stdio.h>
//#include <string.h>
using namespace std;
int main () {
map<int, string> mymap;
map<int, string >::iterator MyIterMap;
mymap[2]="2";
mymap[2]="1";
mymap[2]="1";
mymap[2]="1";
mymap[1]="1";
//cout << "mymap['a'] is ";
//cout << "mymap['b'] is ";
//cout << "mymap['c'] is ";
//cout << "mymap['d'] is ";
//cout << "mymap now contains " << (int) mymap.size() << " elements.";
int algo = 0;
map<int,string>::iterator iter;// = mymap.find(1);
MyIterMap = mymap.begin();
while( MyIterMap != mymap.end() ) {
//iter = mymap.find(1);
//if(iter != mymap.end()) algo++;
//algo++;
int values = (*MyIterMap).first;
//if ((values.compare("b") == 0)) printf("s");
//else printf("n");
//cout << mymap[values] <<endl;
string teste = mymap[values];
if (mymap[values] == "1") algo++;
//if(mymap.count(1) > 0) algo++;
// if(mymap.contains(1)) algo++;
MyIterMap++;
}
printf("%d", algo);
}
se alguem puder me ajudar, e tbm, o map ordena sozinho?
[]s
vou pesquisar sobre.
obrigado isis.
é depois de penar muito consegui.
use arraylist(java), multimap, vector, set. faziam certo + estourava o tempo.
consegui receber aceito no desafio com esse código:
#include <vector>
#include <algorithm>
#include <iostream>
#include <map>
using namespace std;
int main()
{
int votos, i, num, maior, contagem, candidato;
map<int, int> mapa;
map<int,int>::iterator it;
while(scanf("%d", &num) != EOF){
mapa.erase ( mapa.begin(), mapa.end());
maior = candidato = -1;
contagem = 0;
for (i = 0; i < num; i++){
scanf("%d", &votos);
if (mapa.find(votos) == mapa.end()) mapa[votos] = 1;
else mapa[votos]++;
}
for ( it=mapa.begin(); it != mapa.end(); it++ ){
if ((*it).second > maior) {
maior = (*it).second;
candidato = (*it).first;
}
}
cout << "\n" << candidato << "\n";
}
return 0;
}
[]s
Tenta usar o count do algorithm.