Cod sursa(job #2136028)

Utilizator inquisitorAnders inquisitor Data 19 februarie 2018 16:11:59
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.38 kb
#include <bits/stdc++.h>

int N, x; std :: vector<int> v;

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;
        }
    }
}

const int outBufferSize = 200000;

char outBuffer[outBufferSize];

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

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

    for(int i = digits - 1; ~i; --i)
    {
        outBuffer[pos + i] = x % 10 + 48, x /= 10;
    }

    pos += digits; outBuffer[pos++] = 32;

    if(outBufferSize - pos < 13)
    {
        outBuffer[pos] = 0;

        printf("%s", outBuffer);

        pos = 0;
    }
}

int main()
{
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);

    read(N);

    for(int i = 1; i <= N; i++)
    {
        read(x); v.push_back(x);
    }

    sort(v.begin(), v.end());

    pos = 0;

    for(int i : v) itoa(i);

    outBuffer[pos] = 0;

    puts(outBuffer);

    return 0;
}