Cod sursa(job #1709034)

Utilizator UPB_itslupusUPB Crecana Cristache Jercaianu UPB_itslupus Data 28 mai 2016 10:39:03
Problema Consecutive Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.02 kb
#include<iostream>
#include<fstream>
#include<vector>

using namespace std;

ifstream fin("consecutive.in");
ofstream fout("consecutive.out");

int T, N;

int main()
{
    fin >> T;
    for (int t = 0; t < T; t++) {
        fin >> N;
        vector<int> sol_low;
        vector<int> sol_high;
        for (int i = 1; i < N/2 + 1; i++) {
            int l = i;
            int r = N / 2 + 1;

            while (l <= r) {
                int mid = l + (r - l)/2;

                if ((mid - i + 1)*(mid + i) == 2 * N) {
                    sol_low.push_back(i);
                    sol_high.push_back(mid);
                    break;
                }
                else {
                    if ((mid - i + 1) * (mid + i) < 2 * N)
                        l = mid + 1;
                    else
                        r = mid - 1;
                }
            }
        }

        fout << sol_low.size() << '\n';
        for (int i = 0; i < sol_low.size(); i++) {
            fout << sol_low[i] << " " << sol_high[i] << '\n';
        }
    }
}