Cod sursa(job #1708996)

Utilizator vand_bot_la_PAUPB Mardale Mocanu Vasilache vand_bot_la_PA Data 28 mai 2016 10:29:40
Problema Consecutive Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.73 kb
#include <stdio.h>
#include <vector>
using namespace std;

int t, n, res;
vector<pair<int, int> > sol;

int cbin(int x){
	int s = x, d = n / 2 + 1;
	while(s <= d){
		int m = s + (d - s) / 2;
		int r = (x + m) * (m - x + 1) / 2;

		if(r == n)
			return m;
		if(r < n)
			s = m + 1;
		else
			d = m - 1;
	}

	return -1;
}

int main(){
	freopen("consecutive.in", "r", stdin);
	freopen("consecutive.out", "w", stdout);
	scanf("%d", &t);
	for(int i = 0; i < t; ++i){
		sol.clear();
		scanf("%d", &n);

		for(int j = n / 2; j > 0; --j){
			res = cbin(j);
			if(res != -1)
				sol.push_back(make_pair(j, res));
		}
	
		printf("%d\n", sol.size());
		for(int i = 0; i < sol.size(); ++i)
			printf("%d %d\n", sol[i].first, sol[i].second);
	}
	return 0;
}