Pagini recente » Diferente pentru implica-te/arhiva-educationala intre reviziile 107 si 108 | Cod sursa (job #282634) | Clasament simulare-oji-xutzu | Cod sursa (job #1721763) | Cod sursa (job #1028047)
#include <iostream>
#include <cstdio>
#include <cmath>
FILE *f,*g;
using namespace std;
int main(){
f=fopen("date.in","r");
g=fopen("date.out","w");
int n,V[50000],A[50000],B[50000],k,p=1,kk=0,min=32000,pp=0;
fscanf(f,"%d",&n);
k=sqrt(n);
for(int i=1;i<=n;i++)
{
if(p>k)
{
p=1;
kk++;
A[kk]=min;
min=32000;
}
fscanf(f,"%d",&V[i]);
p++;
if(V[i]<min)
{
min=V[i];
}
}
kk++;
A[kk]=min;
for(int j=1;j<=n;j++)
{
min=32000;
for(int i=1;i<=kk;i++)
{
if(A[i]<min)
{
min=A[i];
p=i;
}
}
pp++;
B[pp]=min;
int md,min2=32000;
md=k*(p-1)+1;
for(int l=md;l<=md+k-1;l++)
{
if(V[l]<min2 && V[l]>min)
{
min2=V[l];
}
if(V[l]==min)
{
V[l]=32000;
}
}
A[p]=min2;
}
for(int j=1;j<=n;j++)
{
fprintf(g,"%d ",B[j]);
}
fclose(f);
fclose(g);
return 0;
}