Pagini recente » Cod sursa (job #1215141) | Cod sursa (job #130990) | Cod sursa (job #1673046) | Cod sursa (job #677216) | Cod sursa (job #658589)
Cod sursa(job #658589)
#include <stdio.h>
#define nmax 500000
#define BUF 100010
int v[nmax];
char buffer[BUF];
int poz=BUF-1;
FILE *fin;
void cit(int &n){
n=0;
poz++;
if(poz==BUF){
poz=0;
//citesc o noua linie
fread (buffer,sizeof(char),BUF,fin);
}
while(buffer[poz]>='0' && buffer[poz]<='9'){
n=n*10+(buffer[poz]-'0');
poz++;
if(poz==BUF){
poz=0;
//citesc o noua linie
fread (buffer,sizeof(char),BUF,fin);
}
}
}
int punct_sa(int li, int ls){
int i=1,j=0;
int aux;
while(li<ls){
if(v[li]>v[ls]){
aux=v[li];
v[li]=v[ls];
v[ls]=aux;
aux=i;
i=-j;
j=-aux;
}
li+=i;
ls+=j;
}
return li;
}
void sortare(int li, int ls){
int k;
if(li<ls){
k=punct_sa(li,ls);
sortare(li,k-1);
sortare(k+1,ls);
}
}
int main(){
fin=fopen("algsort.in","r");
int n;
int i;
cit(n);
//printf("%d\n",n);
for(i=0;i<n;i++){cit(v[i]);/*printf("%d ",v[i]);*/}
fclose(fin);
sortare(0,n-1);
FILE *fout=fopen("algsort.out","w");
for(i=0;i<n;i++){fprintf(fout,"%d ",v[i]);}
fclose(fout);
return 0;
}