Cod sursa(job #3132418)

Utilizator omaclearuMacelaru Octavian Andrei omaclearu Data 22 mai 2023 18:59:25
Problema Farfurii Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>

using namespace std;

class FarfuriiSolver {
private:
    int n, k, x;
    ofstream fout;
    vector<int> numbers;

    void calculateX() {
        x = sqrt(2 * k) + 1;
        while (x * (x - 1) / 2 < k)
            x++;
    }

    void generateNumbers() {
        for (int i = 1; i <= n; i++) {
            if (i <= n - x || i == n - (x * (x - 1) / 2 - k))
                numbers.push_back(i);
        }
        for (int i = n; i > n - x; i--)
            if (i !=  n - (x * (x - 1) / 2 - k))
                numbers.push_back(i);
    }

    void writeNumbersToFile() {
        ofstream fout("farfurii.out");
        for (int i: numbers)
            fout << i << " ";
        fout.close();
    }

public:

    void readInput() {
        ifstream fin("farfurii.in");
        fin >> n >> k;
        fin.close();
    }

    void solveProblem() {
        calculateX();
        generateNumbers();
        writeNumbersToFile();
    }
};

int main() {
    FarfuriiSolver solver;
    solver.readInput();
    solver.solveProblem();

    return 0;
}