Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: curs pt aplicatii mobile : Februarie 21, 2015, 22:32:18
http://teamtreehouse.com/

Foarte bun siteul, chiar inveti de aici.. partea proasta e ca ai free trial 7 zile parca, dupaia trebuie sa platesti.
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 504 Euclid : Februarie 12, 2015, 16:08:58
Teste de calitate!
3  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 517 Examene : Februarie 04, 2015, 19:09:00
Mersi ! Am luat acum in considerare si cazul asta si a dat 100.
4  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 517 Examene : Februarie 03, 2015, 17:41:04
Incorect pe testul 1.... Fac cu componente tare-conexe ca sa gasesc nodurile din cerinta b,da corect pe toate testele de la lista lui francu(si pe orice test imi fac)... ma poate ajuta cineva care a avut probleme cu testul 1?
5  infoarena - concursuri, probleme, evaluator, articole / FMI No Stress 5 / Răspuns: FMI No Stress 5 Feedback : Decembrie 02, 2014, 19:25:07
Se mai posteaza solutiile?...a trecut ceva timp...
6  infoarena - concursuri, probleme, evaluator, articole / FMI No Stress 5 / Răspuns: Clasament Inghetat : Noiembrie 22, 2014, 15:40:18
Solutiile cand o sa fie puse?
7  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 155 Turneu : Noiembrie 05, 2014, 01:05:29
M-ar putea ajuta cineva cu un hint? Solutiile nu sunt publicate si nu reusesc sa imi dau seama de ideea de rezolvare
8  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 236 Biscuiti : Iulie 12, 2014, 21:59:55
 Brick wall Am verificat toate testele de pe forum si imi da rezultatul corect, cu exceptia testului in care N = 5000. Rog pe cineva care a luat 100 sa se uite peste sursa mea si sa imi spuna ce am gresit. http://www.infoarena.ro/job_detail/1207414
9  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1479 Harta5 : Iunie 16, 2014, 17:20:07
Am modificat Smile
10  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1479 Harta5 : Iunie 15, 2014, 20:56:32
Acolo nu specifica daca pe windows sau pe linux limita e de o secunda, asa ca m-am incadrat in functie de timpii solutiei oficiale. Cu citirea erau probleme si am marit limita la 0,7.
11  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 016 Range minimum query : Aprilie 11, 2014, 15:06:12
 Aha mersi mult
12  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 016 Range minimum query : Aprilie 11, 2014, 14:29:37
http://www.infoarena.ro/job_detail/1169488?action=view-source

Imi spune cineva de ce iau doar 10 puncte? unde am gresit?
13  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 064 Cobai : Ianuarie 19, 2014, 03:28:24
Nu reusesc sa-mi dau seama unde gresesc.
imi puteti spune unde gresesc?

Cod :


#include <fstream>
#include <queue>
#include <iomanip>
#include <string>
using namespace std;

ifstream is("cobai.in");
ofstream os("cobai.out");

int n,m,SP1,SP2;
char x[51][51];
string s;
float Rooms,PossibleRooms,Result;

queue<pair<int,int> > Q;
queue<pair<int,int> > Q2;

void Input();
void BF();

int main()
{
    Input();
    BF();
    Result = (PossibleRooms)*100/Rooms;
    os << setprecision(4) << Result;

        return 0;
}

void Input()
{
    is >> n >> m;
    for ( int i = 1; i <= n; ++i )
        for ( int j = 1; j <= m; ++j )
        {
            is >> x[j];
            if ( x[j] == '*' )
            {
                Q.push(make_pair(i,j));
                SP1 = i;
                SP2 = j;
                x[j] = '+';
            }
            if ( x[j] == '.')
                Rooms++;
        }
    is >> s;
}

void BF()
{
    int ki,kj,ip,jp;
    for ( int i = 0; i < s.size(); ++i )
    {
        if ( s == 'N' )
            ki = -1, kj = 0;
        if ( s == 'E' )
            ki = 0, kj = 1;
        if ( s == 'S' )
            ki = 1, kj = 0;
        if ( s == 'V' )
            ki = 0, kj = -1;
            int l = 0;
        PossibleRooms = 0;
        while ( !Q.empty() )
        {
            l = 0;
            ip = Q.front().first;
            jp = Q.front().second;
            if ( ip != SP1 || jp != SP2 )
            x[ip][jp] = '.';
            Q.pop();
            while ( 1 != 0 )
            {
                ip += ki;
                jp += kj;
                l = 1;
                if ( ip >= 1 && ip <= n && jp >= 1 && jp <= m && x[ip][jp] == '.' )
                {
                    Q2.push(make_pair(ip,jp));
                    x[ip][jp] = '*';

                }
                else
                    break;
            }
        }
                    while ( !Q2.empty() )
            {
                Q.push(make_pair(Q2.front().first,Q2.front().second));
                Q2.pop();
                PossibleRooms++;
            }
    }
}
14  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 824 Insule : Iulie 10, 2013, 13:45:15
Fara acea linie nu citeste matricea cum trebuie.daca nu o puneam,ramanea la prima linie citirea elementelor din matrice.
15  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 824 Insule : Iulie 10, 2013, 12:44:36
nu inteleg, imi da exact ca in exemplu si iau 0,rezolvarea cred ca este buna ...am trimis si pe evaluatorul de pe campion.edu.ro,si acolo la exemplu 0 puncte,chiar daca imi da exact la fel. Uitati-va va rog peste cod si spuneti-mi ce sa fac:

Citat
#include <cstdio>
#define MAX 101
using namespace std;

int x[MAX][MAX], a[MAX][MAX];
int n,m,size,max(-9999),R,G,B;
int d1[] = { -1, 0, 1, 0};
int d2[] = { 0, 1, 0, -1 };
int minim(999999);

bool ok(int i, int j)
{
    if ( a[j] != 0 )
    return false;
    if ( i < 1 || j < 1 || i > m || j > m)
    return false;
    return true;
}

void lee()
{
    int k(4); int v1,v2;bool modif = true;
    while ( modif )
    {
        modif = false;
    for ( int i = 1; i <= n; i++)
        for ( int j = 1; j <= m; j++ )
        if ( a[j] == k)
        {
            for ( int d = 0; d < 4; d++ )
            {
                v1 = i + d1[d];
                v2 = j + d2[d];
                if ( ok(v1,v2) )
                {
                a[v1][v2] = k+1;
                modif = true;
                }
            }

        }
         k++;
    }
}

struct pozitie{
    int linie;
    int coloana;
    };

void fill(int i,int j,int k)
{
    if ( x[j] == 1)
    {
        x[j]=k;
        size++;
        if ( x[i-1][j] == 1) fill(i-1,j,k);
        if ( x[i+1][j] == 1) fill(i+1,j,k);
        if ( x[j-1] == 1) fill(i,j-1,k);
        if ( x[j+1] == 1) fill(i,j+1,k);

    }
    if ( x[j] == 2)
    {
        x[j]=k;
        size++;
        if ( x[i-1][j] == 2) fill(i-1,j,k);
        if ( x[i+1][j] == 2) fill(i+1,j,k);
        if ( x[j-1] == 2) fill(i,j-1,k);
        if ( x[j+1] == 2) fill(i,j+1,k);

    }
    if ( x[j] == 3)
    {
        x[j]=k;
        size++;
        if ( x[i-1][j] == 3) fill(i-1,j,k);
        if ( x[i+1][j] == 3) fill(i+1,j,k);
        if ( x[j-1] == 3) fill(i,j-1,k);
        if ( x[j+1] == 3) fill(i,j+1,k);

    }
}



int main()
{
    char c;int d;
    pozitie p1[100];
    pozitie p2[100];
    FILE * pFile;
    pFile = fopen("insule.in", "r");
    fscanf(pFile,"%d%d\n", &n,&m);
    for ( int i = 1; i <= n ; i++ )
    {
        for ( int j = 1 ; j <= m; j++ )
        {
            fscanf(pFile,"%c",&c);
            x[j] = c - '0';
            a[j] = c - '0';
        }
        fprintf(pFile,"\n");
    }
    int k = 3;
    for ( int i = 1; i <= n; i++ )
        for ( int j = 1; j <= m; j++ )
        if ( x[j] == 1 || x[j] == 2 || x[j] == 3 )
        {
            k++;
            if ( x[j] == 1)
            R++;
            if ( x[j] == 2)
            G++;
            if ( x[j] == 3)
            B++;
            size = 0;
            fill(i,j,k );
            if ( size > max )
            max = size;
        }
        int o = 0;
        int p = 0;
        int j1,j2;
    for ( int i = 1; i <= n; i++ )
        for ( int j = 1; j <= m; j++ )
        {
            if ( a[j] == 0 )
            {
                if ( a[i-1][j] == 1 || a[i+1][j] == 1 || a[j-1] == 1 || a[j+1] == 1)
                {
                    p1
  • .linie = i;
                    p1
  • .coloana = j;
                    j1 = i;
                    j2 = j;
                    a[j1][j2] = 4;
                    o++;
                }
                if ( a[i-1][j] == 2 || a[i+1][j] == 2 || a[j-1] == 2 || a[j+1] == 2)
                {
                    p2[p].linie = i;
                    p2[p].coloana = j;
                    p++;
                }
            }
        }
    lee();
    int f,g;
    for ( int j = 0; j < p ; j++ )
        {
            f = p2[j].linie;
            g = p2[j].coloana;
            if ( a[f][g] < minim && a[f][g] != 0)
            minim = a[f][g];
        }
    minim -= 3;
    pFile = fopen("insule.out", "w");
    fprintf(pFile, "%i %i %i %i" ,R,G,B,minim);

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