Cod sursa(job #1711781)

Utilizator vgezaVekov Geza vgeza Data 1 iunie 2016 10:24:30
Problema Consecutive Scor 0
Compilator c Status done
Runda Arhiva ICPC Marime 1.39 kb
#include <stdio.h>
#include <stdlib.h>

typedef struct elem{
    int e,v;
    struct elem* kov;
} elem;

elem* create(int a, int b){
    elem* p = calloc(1,sizeof(elem));
    p->e=a;
    p->v=b;
    p->kov=NULL;

    return p;
}

void destroy(elem* ll){
    if (ll->kov!=NULL)
        destroy(ll->kov);
    free(ll);
}

void kiir(elem* ll){
    while (ll!=NULL){
        printf("%d %d\n",ll->e,ll->v);
        ll=ll->kov;
    }
}

int main()
{
    int zz, db=0, n, k,sum;
    elem* fej,*akt;
    FILE *f = fopen("consecutive.in","rt");
    FILE *g = fopen("consecutive.out","wt");
    fscanf(f,"%d",&zz);
    for (int zzz=0;zzz<zz;zzz++){
        fscanf(f,"%d",&n);
        fej=create(0,0);
        akt=fej;
        k=n/2;
        for (int i=n/2+1;i>0;--i){
            sum=i;
            for (int j=i-1;j>0;--j){
                sum+=j;
                if (sum==n){
                    db++;
                    akt->kov=create(j,i);
                    akt=akt->kov;
                    break;
                }
                if (sum>n) break;
            }
        }
        //printf("%d\n",db);
        //kiir(fej->kov);
        fprintf(g,"%d\n",db);
        akt=fej->kov;
        while (akt!=NULL){
            fprintf(g,"%d %d\n",akt->e,akt->v);
            akt=akt->kov;
        }
        db=0;
    }
    fclose(f);
    fclose(g);

    return 0;
}