Cod sursa(job #1709467)

Utilizator space_tab_endlnSapientia CryptoAllnight space_tab_endln Data 28 mai 2016 12:25:25
Problema Consecutive Scor 0
Compilator c Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.59 kb
#include <stdio.h>
#include <stdlib.h>

long long asd[1000][2];
int db;

int main()
{
    freopen("consecutive.in","r",stdin);
    freopen("consecutive.out","w",stdout);
    int t;
    scanf("%d",&t);
    long long n;
    long long m;
    long long i;
    long long s;
    long long min;
    int j;
    while(t--){
        scanf("%lli",&n);
        m = n/2 +(n%2==1?1:0);
        //printf("%lli\n",m);
        min = n;
        db = 0;

        //elso
        s = m;
        i = m;
        while(s<n){
            s += (--i);
        }
        if(s==n){
            asd[db][0] = i;
            asd[db][1] = m;
            ++db;
        }
        //printf("elso %lli\n",s);
        while(1){
                //printf("awd %lli %lli\n",s,m);
            s -= m;
            --m;
            while(s<n){
                s += (--i);
                if(i<1) break;
            }

            if(s==n){asd[db][0] = i; asd[db][1] = m; ++db;}
            if(i<1) break;
        }
        /*while(1){
            s = m;
            i = m;

            while(s<n){
                s += (--i);
                if(i<min) min = i;
            }
            if(s==n){
                //printf("%lli %lli\n",i,m);
                asd[db][0] = i;
                asd[db][1] = m;
                ++db;
            }
            if(min<=1) break;
            //printf("m: %lli min: %lli\n",m,min);
            --m;
        }*/
        printf("%d\n",db);
        for(j = 0;j<db;++j){
            printf("%lli %lli\n",asd[j][0],asd[j][1]);
        }
    }
    return 0;
}