Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Sircifre  (Citit de 17407 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
visanr
Nu mai tace
*****

Karma: 168
Deconectat Deconectat

Mesaje: 213



Vezi Profilul
« : Februarie 12, 2012, 17:34:57 »

Problema este aceasta: http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=1216
Cod:
#include <stdio.h>
#include <stdlib.h>

 

int main()
{
    //freopen("sircifre.in","r",stdin);
    //freopen("sircifre.out","w",stdout);
    int v[500],n,i,gasit=1,ap[10],k=0;
    scanf("%i", &n);
    for(i=0;i<10;i++)
    {
                     ap[i]=0;
    }
    for(i=0;i<n;i++)
    {
                    scanf("%i", &v[i]);
                    ap[v[i]]++;
    }
    while(gasit && n)
    {
               gasit=0;
               k=0;
               for(i=0;i<n-1;i++)
               {
                                 if(abs(v[i]-v[i+1])==1)
                                 {
                                         gasit=1;
                                         k=i;
                                         ap[v[i]]--;
                                         ap[v[i+1]]--;
                                         break;
                                 }
               }
               if(gasit)
               {
                        if(k<n-2)
                        {
                               for(i=k;i<n-2;i++)
                               {
                                     v[i]=v[i+2];
                               }
                        }
                        n-=2;
               }
    }
    gasit=0;
    for(i=0;i<10;i++)
    {
                     if(ap[i])
                     {
                               gasit=1;
                               break;
                     }
    }
    if(gasit)
    {
         for(i=0;i<10;i++)
         {
                     if(ap[i])
                     {
                             printf("%i %i\n", i, ap[i]);
                     }
         }
    }else
    {
         printf("-1\n");
    }
    return 0;
}
Iau doar 60 de pct pe sursa asta, pe celelalte 4 teste primesc WA. Am incercat sursa pe primul test picat, care are n=400 si imi afiseaza un 2 in plus si un 4 in minus (sau invers, nu mai tin minte exact). Care ar fi problema?
Memorat
dr_personality
Strain


Karma: -3
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #1 : Februarie 05, 2014, 23:03:32 »

Am avut si eu aceasi problema,cu o sursa care facea cam acelasi lucru. Parcurge vectorul ,vezi daca gasesti numere a caror diferenta e 1, le elimini(doar pe cele pe care le-ai gasit initial), iti faci noul vector fara cele 2 elemente si continui sa faci asta pana nu mai ai ce elmina,apoi afisezi elementele ramase . Asta-i tot,sper sa iei suta ea  Cool
Memorat
deneo
Vorbaret
****

Karma: 185
Deconectat Deconectat

Mesaje: 160



Vezi Profilul
« Răspunde #2 : Februarie 06, 2014, 01:17:34 »

Si a durat numai doi ani ca sa primeasca raspuns.
Te rog, citeste si data posturilor. Te rog eu.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines