Cod sursa(job #1709836)

Utilizator SAPIENTIA_N_formatXSAPIENTIA NformatX SAPIENTIA_N_formatX Data 28 mai 2016 14:06:30
Problema Consecutive Scor 0
Compilator c Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.96 kb
#include <stdio.h>
#include <stdlib.h>
int consec(int, int, int*,int,int,int*, int);
int main()
{
    int i,x,*a,n,q,db=0,l;

    FILE*fin=fopen("consecutive.in", "rt"), *fout=fopen("consecutive.out", "wt");

    fscanf(fin, "%i%i", &n, &x);

    q=(x/2)+1;

    a=(int*)malloc(q*sizeof(int));

    int b[x];

    for(i=1; i<=q; ++i)
    {
        a[i]=i;
    }

    db=consec(1, q, a, x, 0, b, 1);

    fprintf(fout,"%i\n",db);

    for(l=0; l<2*db; ++l)
    {
        fprintf(fout,"%i %i\n", b[l], b[l+1]);
        ++l;
    }
    fclose(fin);
    fclose(fout);
    return 0;
}

int consec(int k, int m, int*a, int x, int db,int*b, int j)
{
    int i,sum=0;
    for(i=m; i>=k; --i)
    {
        sum+=a[i];
        if(sum==x)
        {
            b[j-1]=i;
            b[j]=m;
            db+=1;
            j+=2;
        }
    }
    if(sum>x)
    {
        db=consec(1,m-1,a,x,db,b,j);
        return db;
    }
    return db;
}