Cod sursa(job #1709974)

Utilizator UCV_DUMITRU_ENACHE_MITROIUCV DUMITRU MITROI ENACHE UCV_DUMITRU_ENACHE_MITROI Data 28 mai 2016 14:39:31
Problema Consecutive Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 2.48 kb
#include <iostream>
#include <math.h>
#include <vector>
#include <stdio.h>
using namespace std;

    FILE *g;
void afs(long n ){
//    unsigned long cnt = 0;

    vector<pair<long,long>> limite;
//    long limite[100][2];


    for(int i = 2; i <= 15; i++){
        float mij = (float)n / i;
        long first;
        long last;
        float rest = (mij - floor(mij));

//        cout << i << " " << rest << " " << mij << endl;

        if ( i % 2 == 0){
            if(rest == 0.5){
                first =  ceil(mij - ((float)i/2));
                last = floor(mij + ((float)i/2));
                if(first > 0) {
//                  cout << first << " " << last << endl;
                  limite.push_back(make_pair(first,last));
                } else{
                    break;
                }
            }
        } else if(rest == 0){
            first = mij - (i/2);
            last = mij + (i/2);
            if(first > 0){
//                cout << first << " " << last << endl;
                limite.push_back(make_pair(first,last));
            } else{
                break;
            }
        }

    }
fprintf(g,"%d\n",limite.size());
//    cout << cnt << endl;

    for( auto &a : limite){

            fprintf(g,"%d %d\n",a.first, a.second);
    }

//    if(cnt!=0)
//    {
//        for(int i = 0; i < cnt; i++){
//            fprintf(g,"%d %d\n",limite[i][0], limite[i][1]);
////            cout << limite[i][0] << " " << limite[i][1] << endl;
//        }
//    }
}


void aaa(long long n){

    vector<pair<long long, long long>> limite;
    for(long long i = 2; i < n; i++){
        long long deimp = (n - ((i*(i-1)) / 2));
        if(deimp < 1){
            break;
        }
        if(deimp%i==0){
            long long X = deimp / i;
            if(X >= 1)
            {
        //                cout << X << " " << X + i - 1 <<  endl;
                limite.push_back(make_pair(X,X + i - 1 ));
            }
            else {
                break;
            }
        }
    }

    fprintf(g,"%d\n",limite.size());
//    cout << cnt << endl;

    for( auto &a : limite)
    {
        fprintf(g,"%d %d\n",a.first, a.second);
    }

}


int main()
{
    FILE *f = fopen("consecutive.in","r");
    g = fopen("consecutive.out","w");

    int nrT;
    long long n ;
    fscanf(f,"%d",&nrT);

    for(int i = 0; i < nrT; i++){
        fscanf(f, "%llu", &n);
        aaa(n);
    }

    return 0;
}