infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Airinei Adrian din Septembrie 11, 2007, 14:19:57



Titlul: 523 Plan
Scris de: Airinei Adrian din Septembrie 11, 2007, 14:19:57
Aici puteţi discuta despre problema Plan (http://infoarena.ro/problema/plan).


Titlul: Răspuns: 523 Plan
Scris de: Gabriel Bitis din Septembrie 21, 2007, 22:11:50
Cum se explica faptul ca sursa urmatoare (care nu are nici o legatura cu problema Plan) ia 10 puncte?...
Cod:
#include<stdio.h>

long a, b, c, k, cnt[20][20], e, contor;


int func(long x)
{
  long cpy=x, contor=0, e=2, i;
  for (i=1; i<=x%10; i++)
    if (i==c) contor++;
  cpy/=10;

  while (cpy)
    {
      for (i=1; i<=k; i++) contor+=cnt[e][i];
      contor*=(cpy%10);
      cpy/=10;
      e++;
    }
  return contor;
}


int main()
{
  freopen("cifre.in","r",stdin);
  freopen("cifre.out","w",stdout);

  scanf("%ld %ld %ld %ld",&a,&b,&c,&k);

  long i, j, cpy;
  cpy=b;
  while (cpy) e++, cpy/=10;

  cnt[0][0]=1;

  for (i=1; i<=10; i++) cnt[i][0]=cnt[i-1][0]*9;

  for (i=1; i<=e; i++)
    for (j=1; j<=k; j++)
      cnt[i][j]=9*cnt[i-1][j]+cnt[i-1][j-1];
  contor=func(b)-func(a);
  printf("%ld", contor);

  return 0;
}


Titlul: Răspuns: 523 Plan
Scris de: Bogdan-Alexandru Stoica din Septembrie 21, 2007, 22:37:57
si urmatorul cod ia 10 puncte:
Cod:
#include<stdio.h>
int main()
{
  freopen("xxx.out", "w", stdout);
  printf("0");
  return 0;
}

probabil ca evaluatorul nu verifica daca fisierul de iesire este cel corect si, in mod sigur, unul dintre raspunsuri este 0.  :D


Titlul: Răspuns: 523 Plan
Scris de: Gabriel Bitis din Septembrie 21, 2007, 22:39:13
Eu vroiam sa trimit o sursa aiurea care sa'mi ia 0 puncte la problema asta... asa ca am trimis prima sursa p care am dat click.... nu am mai verificat alte cazuri..


Titlul: Răspuns: 523 Plan
Scris de: Bogdan-Alexandru Stoica din Septembrie 21, 2007, 22:41:18
probabil ca doar cazul cu 0 este unul "ghicibil" pentru celelalte trebuie sa nimeresti si muchia. se mai intampla :P


Titlul: Răspuns: 523 Plan
Scris de: Airinei Adrian din Septembrie 22, 2007, 02:04:59
S-a rezolvat, acum chiar trebuie afisat 0 ca sa iei 10 puncte :)


Titlul: Răspuns: 523 Plan
Scris de: Sergiu-Ioan Ungur din Ianuarie 14, 2010, 20:04:09
Ma poate ajuta cineva? Este vreun caz particular sau ceva de genul? Iau 92p si chiar nu-mi dau seama ce gresesc :-k.


Titlul: Răspuns: 523 Plan
Scris de: Alexandru-Iancu Caragicu din Martie 20, 2010, 15:48:11
Care e raspunsul la urmatoarele date de intrare?

Cod:
4 3
1 2
1 4
3 4


Titlul: Răspuns: 523 Plan
Scris de: Adrian Draghici din August 17, 2010, 12:13:47
care e treaba cu "fisierul de iesire este gresit"? imi apare asta la 1/2 din teste. multumesc pentru ajutor.


Titlul: Răspuns: 523 Plan
Scris de: Simoiu Robert din August 17, 2010, 15:44:02
Adica ( cred ) ca acest mesaj este in locul celui de Incorect, adica nu ai afisat nici macar drumul minim corect .  :thumbup:


Titlul: Răspuns: 523 Plan
Scris de: Adrian Draghici din August 17, 2010, 16:36:46
nu cred, pentru ca uite: 0 = raspuns gresit
http://infoarena.ro/job_detail/417800


Titlul: Răspuns: 523 Plan
Scris de: Pripoae Teodor Anton din August 17, 2010, 17:56:53
Nu ai afisat in formatul corect probabil.


Titlul: Răspuns: 523 Plan
Scris de: Vidrean Mihai din Ianuarie 02, 2013, 13:33:15
Saut ! Nu am inteles la solutia oficiala partea cu construirea grafului componentelor tare conexe.Cand construiesc graful raman doar muchiile din componentele tare conexe ? Adica pentru exemplul din problema sunt 2 componente tare conexe: prima:nodurile 1 si 2 cu muchiile 1->2,2->1 si a doua nodul 3.Atunci nodul 3 ar trebui sa apartina si lui X si lui Y.

Sau ar trebui sa ramana muchia 2->3 ?Si atunci as avea 3 apartine lui Y si X e vida.Deci nu am cum sa duc muchie la x1 sau sa fac parcurgerea pentru construirea perechilor  (x1, y1), (x2, y2) ... (xk, yk).

Imi poate explica cineva , va rog ?
Mutumesc.


Titlul: Răspuns: 523 Plan
Scris de: UAIC.VlasCatalin din Ianuarie 02, 2013, 23:57:15
Cind faci graful componentelor conexe , afli mai intii pentru fiecare nod din ce componenta conexa face parte, apoi pentru toate muchiile din graful initial te uiti daca leaga noduri ce apartin la componente diferite, daca da atunci unesti componentele, care reprezinta nodurile din noul graf. Pentru exemplu prezentat nodurile 1 si 2 formeaza componenta 1, iar nodul 3 componenta 2, in graful initial este muchie de la 2 la 3, deci in graful componentelor conexe sunt doua noduri si o muchie care le leaga 1->2; Acum nodul 2 are gradul de iesire 0, iar nodul 1 are gradul de intrare 0 + exista drum de la 1 la 2, deci aceste noduri vor forma perechea x1,y1.  :)

Apropo la testul 6 raspunsul e 0  :D


Titlul: Răspuns: 523 Plan
Scris de: Vidrean Mihai din Ianuarie 05, 2013, 21:32:41
Iau 0p si imi scrie Eroare in configurarea problemei.Si la raport evaluator imi scrie urmatorea:
Raport evaluator

Contactează autorul problemei:
Evaluatorul nu a returnat un număr la stdout pe testul 1 (se ignoră spaţii, newline, etc)  ](*,)

Ce inseamna asta?Ma poate ajuta cineva?
Multumesc.

Aici e sursa mea:
Cod:
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
struct nod{
    int index,lowlink;
}v[256];
vector <int> g[256],ctc[256];
bool viz[256],inS[256],gi[256],go[256],viz2[256];
int n,ind,nr,ni,no;
int nrc[256],S[256],X[256],Y[256];
queue < int > Q;
void strongconnect(int x){
    int i,vf;
    ind++;viz[x]=1;
    v[x].index=ind;
    v[x].lowlink=ind;
    S[++S[0]]=x;inS[x]=1;
    for(i=0;i<(int)g[x].size();i++){
        vf=g[x][i];
        if(!viz[vf]){
            strongconnect(vf);
            v[x].lowlink=min(v[x].lowlink,v[vf].lowlink);
        }
        else if(inS[vf])
            v[x].lowlink=min(v[x].lowlink,v[vf].lowlink);
    }
    if(v[x].index==v[x].lowlink){
        nr++;
        while(S[S[0]]!=x){
            nrc[S[S[0]]]=nr;
            inS[S[S[0]]]=0;
            --S[0];
        }
        nrc[x]=nr;
        inS[x]=0;
        --S[0];
        }
}
void Tarjan(){
    for(int i=1;i<=n;i++)
        if(!viz[i])
            strongconnect(i);
}
void gctc(){
    for(int i=1;i<=n;i++)
        for(int j=0;j<(int)g[i].size();j++){
            if(nrc[i]!=nrc[g[i][j]]){
                ctc[nrc[i]].push_back(nrc[g[i][j]]);
                gi[nrc[g[i][j]]]=1;
                go[nrc[i]]=1;
            }
        }
}
void BFS(int x){
    int curr,i;
    for(i=1;i<=nr;i++)
        viz[i]=0;
    while(!Q.empty())
        Q.pop();
    Q.push(x);
    viz[x]=1;
    while(!Q.empty()){
        curr=Q.front();
        for(i=0;i<(int)ctc[curr].size();i++){
            if(!viz[ctc[curr][i]]){
                Q.push(ctc[curr][i]);
                viz[ctc[curr][i]]=1;
                if(!viz2[ctc[curr][i]] && !go[ctc[curr][i]]){
                    Y[++Y[0]]=ctc[curr][i];
                    X[Y[0]]=x;viz[ctc[curr][i]]=1;
                    return ;
                }
            }
        }
        Q.pop();
    }
}
void add(int y,int x){
    int i;
    for(i=1;i<=n;i++)
        if(nrc[i]==y){
            printf("\n%d ",i);
            break;}
    for(i=1;i<=n;i++)
        if(nrc[i]==x){
            printf("%d",i);
            break;}
}
int main(){
    int i,m,x,y,j;
    freopen("plan.in","r",stdin);
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;i++){
        scanf("%d%d",&x,&y);
        g[x].push_back(y);
    }
    fclose(stdin);
    Tarjan();
    freopen("plan.out","w",stdout);
    if(nr==1)
        printf("0\n");
    else {
        gctc();
        for(i=1;i<=nr;i++){
            if(!gi[i]){
                ni++;
                BFS(i);
            }
            if(!go[i])
                no++;
        }
        printf("%d",max(ni,no));
        for(i=1;i<=min(ni,no);i++){
            if(i==min(ni,no)){
                add(Y[i],X[1]);
                go[Y[i]]=1;
                gi[X[1]]=1;}
            else{
                add(Y[i],X[i+1]);
                go[Y[i]]=1;
                gi[X[i+1]]=1;
            }
        }
        if(ni<no){
            for(i=1;i<=nr;i++)
                if(!gi[i])
                    add(X[1],gi[i]);
        }
        else if(no>ni){
            for(i=1;i<=nr;i++)
                if(!go[i])
                    add(go[i],X[1]);
        }
    fclose(stdout);
    }
    return 0;
}


Titlul: Răspuns: 523 Plan
Scris de: Sorin Rita din Ianuarie 05, 2013, 22:03:50
Nu e de la tine. Asteapta sa rezolve un admin problema


Titlul: Răspuns: 523 Plan
Scris de: Stratulat Alexandru din Februarie 22, 2013, 16:53:47
Eu iau 10 puncte cu wrong answer si nu stiu de ce. Imi puteti da va rog niste teste si rezultatul lor ca sa ma conving unde este greseala ?


Titlul: Răspuns: 523 Plan
Scris de: Cosmin Rusu din Iunie 27, 2013, 11:10:49
Buna.
Cred ca iarasi sunt probleme cu evaluatorul acestei probleme. Primesc urmatorul mesaj in feedback:

Cod:
Raport evaluator

Contactează autorul problemei:
Evaluatorul nu a returnat un număr la stdout pe testul 1 (se ignoră spaţii, newline, etc)


Titlul: Răspuns: 523 Plan
Scris de: Mihai Calancea din Iunie 27, 2013, 14:00:05
Fixed. Resubmitati va rog.


Titlul: Răspuns: 523 Plan
Scris de: FMI Suditu Thomas din Februarie 18, 2015, 18:24:13
E ceva special la testul 8? :?


Titlul: Răspuns: 523 Plan
Scris de: predescu din Iunie 19, 2018, 13:45:22
e o problema grea
 :horsy: :horsy: :horsy: :horsy: :horsy: :horsy: :horsy: :horsy: :horsy: