Cod sursa(job #1736421)

Utilizator andreey_047Andrei Maxim andreey_047 Data 1 august 2016 18:30:08
Problema Consecutive Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

typedef long long LL;

int T,N,a[12000][2],nr;

inline LL Sum(int i,int j){
  return (j-i+1)*i+((j-i)*(j-i+1))/2;
}

int main(){
    ifstream f("consecutive.in");
    ofstream g("consecutive.out");
    int i,l,r,mij;
    LL x;
    f >> T;
    while(T--){
        f >> N;
        nr = 0;
        for(i = 2; Sum(1,i) <=N; ++i){
            l = 1 , r = N/2+1;
            while(l <= r){
                mij = (l+r)/2;
                x = Sum(mij-i+1,mij);
                if(x == N){
                    a[++nr][0] = mij-i+1 , a[nr][1] = mij;
                    break;
                }
                else if(x < N)
                    l = mij+1;
                else r = mij-1;
            }
        }
        g << nr << '\n';
        for(i = 1; i <= nr; ++i)
            g << a[i][0] <<' '<<a[i][1] << '\n';
    }

    f.close();
    g.close();
    return 0;
}