martes, 29 de mayo de 2012

Problema E

Aqui les muestro una solucion de problema E del concurso, nostros no perdonamos

#include 
#include 
using namespace std;

int main()
{
    int n,pos,i;
    scanf("%d",&n);
    while(n!=0)
    {
        int pos[10001]={0};
        int num[10001]={0};
        for ( i = 1 ; i <= n ; i ++)
        scanf("%ld%ld",&num[i],&pos[i]);
        int c = 0;
        int p;
        for ( i = 1 ; i <= n ; i ++)
        {
                p = i+pos[i];
                if(p>n || p <1)
                c=c+1;
                else
                {
                    if(pos[i] != 0)
                    {
                        c = c +pos[i];
                        c = c+ pos[i+pos[i]];
                    }
                }
        }
        if (c == 0)
        {
        for ( i = 1 ; i <= n ; i ++)
        {
            if(pos[i]==0)
            g[i]=num[i];
            if(pos[i]>0)
            g[i+pos[i]]=num[i];
            if(pos[i]<0)
            g[i+pos[i]]=num[i];
        }

        for ( i = 1 ; i <= n ; i ++)
        {

            if(i==n)
            printf("%ld",g[i]);
            else
            printf("%ld ",g[i]);
        }
        printf("\n");

        }
        else
        {
            printf("-1\n");
        }

        scanf("%d",&n);
    }
    return 0;
}

No hay comentarios:

Publicar un comentario