Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 025 Heapuri : Februarie 06, 2017, 17:48:14
Asta-i sursa mea...da raspuns corect si merge si super rapid...nu pot sa-mi dau seama de ce imi da Limit exceeded si Killed by signal 11 si 6.. Un sfat m-ar ajuta enorm..
PS: AM FACUT METODA CU HEAP-URI (TATA / FIU / VEC POZITII)
Cam care e complexitatea codului meu
http://www.infoarena.ro/job_detail/1870456

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

const int NMAX = 200005;
set<int>myHeap;
set<int>::iterator it;
int el[NMAX];
int N, operation, nr;

void citire()
{
    freopen("heapuri.in", "r", stdin);
    freopen("heapuri.out", "w", stdout);
    scanf("%d", &N);
    for(int i = 1; i <= N; i++)
    {
        scanf("%d", &operation);
        if(operation == 3) printf("%d\n",*myHeap.begin());
        else if(operation == 2){
            int y; scanf("%d", &y);
            //g<<el[y];
            myHeap.erase(find(myHeap.begin(), myHeap.end(), el[y]) );
        }else{
            int x; scanf("%d", &x);
            myHeap.insert(x);
            el[++nr] = x;
        }
    }
    fclose(stdin);
}

int main()
{
    citire();
    return 0;
}
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 564 Rfinv : Ianuarie 17, 2017, 20:00:49
Imi poate spune cineva unde gresesc de imi da testul " incorect " ? >.>
PS: Am luat multe teste cu solutia asta, daca aveti cazuri exceptate dati-mi-le.. Multumesc !

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

ifstream f("rfinv.in");
ofstream g("rfinv.out");

const int NMAX = 51;
int t, n, m, counter;
int a[NMAX][NMAX], c[NMAX][NMAX];

void citire()
{
    f>>n>>m;

    for(int i = 1; i<= n; i++)
        for(int j =1; j <= n; j++)
        {
            if(i != j) a[j] = inf;
        }

    for(int i = 1; i <= m; i++)
    {
        int x, y;
        f>>x>>y;
        a
  • [y] = 1;
        a[y]
  • = 1;
    }

    for(int i = 1; i <= n; i++)
        for(int j = 1; j <=n; j++)
        {
            f>>c[j];
            if(a[j] || a[j] == inf)
                a[j] = c[j];
        }
}

void roy_floyd()
{
    int i, j, k;
    for( k = 1; k <= n; k++)
        for( i = 1; i <= n; i++)
            for( j = 1; j <= n; j++)
                if(i != j && i != k && j != k && a[j] > a[k] + a[k][j] && a[j] )
                {
                    a[j] = a[k] + a[k][j];
                    counter++;
                }
}

void afisare()
{
    for(int i = 1; i <= n; i++)
    {

        for(int j = 1; j <= n; j++)
            g<<a[j]<<" ";
        g<<"\n";
    }

}

int main()
{
    f>>t;
    for(int i = 1; i <= t; i++)
    {
        int greseli = 0;
        counter = 0;
        citire();
        afisare();
        g<<"\n";
        roy_floyd();

        if(counter != 0)
            g<<"NU" <<"\n";
        else
        {
            for(int i = 1; i <= n; i++)
                for(int j = 1; j <= n; j++)
                    if(a[j] != c[j])
                        greseli++;
            if(greseli != 0)
                g<<"NU"<<"\n";
            else g<<"DA"<<"\n";
        }

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