Cod sursa(job #2136629)

Utilizator inquisitorAnders inquisitor Data 20 februarie 2018 01:31:49
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<bits/stdc++.h>

int n, i, v[500000];

const int bufferSize = 32768;

int pos = 0; char buffer[bufferSize];

void inline read(int &num)
{
    num = 0;

    while(buffer[pos] < 48 | buffer[pos] > 57)
    {
        if(++pos == bufferSize)
        {
           fread(buffer, 1, bufferSize, stdin);

           pos = 0;
        }
    }
    while(buffer[pos] > 47 & buffer[pos] < 58)
    {
        num = num * 10 + buffer[pos] - 48;

        if(++pos == bufferSize)
        {
           fread(buffer, 1, bufferSize, stdin);

           pos = 0;
        }
    }
}

char outBuffer[5000000], *p = outBuffer;

void inline itoa(int x)
{
    int digits = 1;

    for(int i = x; i /= 10; ++digits);

    for(int i = digits - 1; ~i; --i)
    {
        *(p + i) = x % 10 + 48, x /= 10;
    }

    p += digits; *p++ = 32;
}


main()
{
    std::ifstream f("algsort.in");

    for(read(n); i < n; read(v[i++]));

    for(std :: sort(v, v + n); i; itoa(v[n - i--]));

    freopen("algsort.out", "w", stdout);

    puts(outBuffer);
}