Cod sursa(job #1710031)

Utilizator UPTReturnUPT Return UPTReturn Data 28 mai 2016 14:49:57
Problema Consecutive Scor 0
Compilator c Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.84 kb
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a[10000],b[10000];
    int n=0,i,x,j,count=0;
    FILE *f,*g;
    f=fopen("consecutive.in","r");
    g=fopen("consecutive.out","w");

    if(!f || !g)
    {
    printf("Nu merg fisierele");
    return -1;
    }

    if(fscanf(f,"%d",&n)!=1)
    {
        printf("Nu sunt destule informatii");
        return -11;
    }
    for(i=1;i<=n;i++)
    {
        if(fscanf(f,"%d",&x)==1){
        count=0;
        if(x%2==1)
            {count++;
                for(j=3;j<=x/2;j+=2)
                    if(x %j==0 && ((x/j)-(j/2))>0)
                        {count++;
                        a[count]=((x/j)-(j/2));
                        b[count]=((x/j)+(j/2));
                        }

                fprintf(g,"%d\n",count);
                fprintf(g,"%d %d\n",x/2,x/2+1);

                for(j=2;j<=count;j++){
                    fprintf(g,"%d %d\n",a[j],b[j]);
                    }

            }
            else
            {
                for(j=3;j<x/2;j++)
                    if(j%2==1 && x%j==0 && ((x/j)-(j/2))>0)
                {
                    count++;
                    a[count]=(x/j)-(j/2);
                    b[count]=(x/j)+(j/2);
                }
                else
                    if(j%2==0 && x%(x/j+x/j+1)==0 && ((x/j)-(j-2)/2)>0)
                    {
                    count++;
                    a[count]=(x/j)-((j-2)/2);
                    b[count]=(x/j)+((j-2)/2);
             }
            fprintf(g,"%d\n",count);
            for(i=1;i<=count;i++)
                fprintf(g,"%d %d\n",a[i],b[i]);
            }

        }
        else
            {
                printf("Nu sunt destule informatii");
                return -11;
            }
    }


    fclose(f);
    fclose(g);
    return 0;
}