Cod sursa(job #1709075)

Utilizator ubb_oprimabuzurile_2016UBB - OprimAbuzurile2016 - Petru Bianca Cosmin ubb_oprimabuzurile_2016 Data 28 mai 2016 10:48:10
Problema Consecutive Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;

bool cmp(pair<int,int> a,pair<int,int> b) {
  return a.second-a.first<b.second-b.first;
}

int main() {
  //ifstream f("input.txt");
  ifstream f("consecutive.in");
  ofstream g("consecutive.out");
  int t;

  for(f>>t;t--;) {
    int n;
    vector<pair<int,int> > r;
    f>>n;
    for(int i=1; i*i<=2*n; ++i) if((2*n)%i==0){
      int d=i,nd=2*n/i;
      if((nd + d) % 2 == 0)
        continue;
      int m=(nd+d-1)/2; int p=m-d;
      if(m > 0 && p >= 0 && m != p+1)
        r.push_back(make_pair(p+1,m));
      swap(d,nd);
      m=(nd+d-1)/2; p=m-d;
      if(m > 0 && p >= 0 && m != p+1)
        r.push_back(make_pair(p+1,m));
    }
    sort(r.begin(),r.end(),cmp);
    g<<r.size()<<'\n';
    for(auto i:r) g<<i.first<<' '<<i.second<<'\n';
  }
}