Pagini recente » Cod sursa (job #885311) | Cod sursa (job #2160116) | Cod sursa (job #135001) | Cod sursa (job #536888) | Cod sursa (job #1028060)
#include <iostream>
#include <cstdio>
#include <cmath>
long V[50000],A[50000],B[50000];
FILE *f,*g;
using namespace std;
int main(){
f=fopen("date.in","r");
g=fopen("date.out","w");
long n,k,p=1,kk=0,min=32000,pp=0,i,j,l;
fscanf(f,"%ld",&n);
k=sqrt(n);
for(i=1;i<=n;i++)
{
if(p>k)
{
p=1;
kk++;
A[kk]=min;
min=32000;
}
fscanf(f,"%ld",&V[i]);
p++;
if(V[i]<min)
{
min=V[i];
}
}
kk++;
A[kk]=min;
for(j=1;j<=n;j++)
{
min=32000;
for(i=1;i<=kk;i++)
{
if(A[i]<min)
{
min=A[i];
p=i;
}
}
pp++;
B[pp]=min;
long md,min2=32000,mt;
int sem=0;
md=(k*(p-1))+1;
mt=md+k-1;
if(mt>n)
mt=n;
for(l=md;l<=mt;l++)
{
if(V[l]<min2)
{
if(V[l]==min)
{
if(sem)
min2=V[l];
}
else min2=V[l];
}
if(V[l]==min&&!sem)
{
V[l]=32000;
sem=1;
}
}
A[p]=min2;
}
for(int j=1;j<=n;j++)
{
fprintf(g,"%ld ",B[j]);
}
fclose(f);
fclose(g);
return 0;
}