Cod sursa(job #1068891)

Utilizator Teodor94Teodor Plop Teodor94 Data 28 decembrie 2013 21:50:38
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>

#define MAX_N 100001
#define ll long long

int v[MAX_N];
bool marked[MAX_N];

int main() {
    FILE *fin, *fout;

    fin = fopen( "farfurii.in", "r" );
    int n;
    ll k;
    fscanf( fin, "%d%lld", &n, &k );
    fclose( fin );

    int i;
    for ( i = 1; i <= n; ++i ) {
        ll max_inv = (ll) (n - i) * (n - i - 1) / 2;
        if ( max_inv <= k ) {
            marked[i + k - max_inv] = true;
            v[i] = i + k - max_inv;
            break;
        } else {
            v[i] = i;
            marked[i] = true;
        }
    }

    for ( int val = n; val > 0 && i <= n; --val )
        if ( !marked[val] ) {
            ++i;
            v[i] = val;
            marked[val] = true;
        }

    fout = fopen( "farfurii.out", "w" );
    for ( int i = 1; i <= n; ++i )
        fprintf( fout, "%d ", v[i] );
    fclose( fout );
}