Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 985 Livada : Martie 12, 2010, 10:10:40
Citat
Ori nu e eficient algoritmul, ori ai o bucla infinita, incearca testele OJI.
Apoi, cu algoritmu meu iau 100 de pct pe testele de la OJI...

Citat
Nu am citit foarte atent sursa, dar am văzut că folosești la un moment dat un map. Ai grijă că această structură este un mare consumator de timp și memorie, iar dacă o poți înlocui cu altceva, nu ezita.

Ai vreo idee cu ce as putea inlocui map-u?
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 985 Livada : Martie 11, 2010, 09:57:02
De ce iau doar 90puncte? 1 test = TLE

Cod:
#include<stdio.h>
#include<map>
using namespace std;
int main()
{
    FILE *fin=fopen("livada.in","r");
    FILE *fout=fopen("livada.out","w");
    int m,n,p;
    fscanf(fin,"%d %d %d",&m,&n,&p);
    int mcon = 0, con = 0, last = -1, msoi = 0;
    int need = n / 2 + 1;
    for(int c = 0; c < m; c++)
    {
        last = -1;
        con = 0;
        map<int, int> v;
        int more = 1;
        for(int a = 0; a < n; a++)
        {
            int soi;
            fscanf(fin, "%d", &soi);
            if(more)
            {
                if(v.count(soi) == 0)
                {
                    v.insert(pair<int,int>(soi,1));
                }
                else
                {
                    v[soi] = v[soi] + 1;
                    if(v[soi] >= need)
                    {
                        more = 0;
                        msoi++;
                    }
                }
            }
            if(last != -1 && last == soi)
            {
                con++;
                if(con > mcon)
                    mcon = con;
            }
            else
                con = 1;
            last = soi;
        }
    }
    fprintf(fout,"%d\n%d",msoi,mcon);
    fclose(fin);
    fclose(fout);
    return 0;
}

Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines