Cod sursa(job #541385)

Utilizator feelshiftFeelshift feelshift Data 25 februarie 2011 09:50:11
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
// http://infoarena.ro/problema/farfurii
#include <fstream>
using namespace std;

#define maxSize 100005

ifstream in("farfurii.in");
ofstream out("farfurii.out");

bool used[maxSize];
int number[maxSize];

int main() {
    int length;
    int i,k;
    unsigned long long invers,nrInvers;

    in >> length >> invers;

    for(i=1;i<=length;i++) {
        nrInvers = (unsigned long long) (length - i) * (length - i - 1) / 2;

        if(nrInvers < invers) {
            number[i] = i + invers - nrInvers;
            used[i + invers - nrInvers] = true;
            break;
        }
        else {
            number[i] = i;
            used[i] = true;
        }
    }

    k = i;
    for(int i=length;i>=1;i--)
        if(!used[i])
            number[++k] = i;

    for(int i=1;i<=length;i++)
        out << number[i] << " ";

    in.close();
    out.close();

    return (0);
}