Pagini recente » Cod sursa (job #3038770) | Cod sursa (job #616613) | Cod sursa (job #1446571) | Cod sursa (job #968239) | Cod sursa (job #1873169)
#include <cstdio>
using namespace std;
FILE *f, *g;
int n;
struct numarul
{
int nr;
int bit;
};
numarul aux, v[32001];
void readFile()
{
f = fopen("invsort.in", "r");
fscanf(f, "%d", &n);
int i;
for(i = 1; i <= n; i ++)
{
fscanf(f, "%d", &v[i].nr);
}
}
int mx;
int apMax;
bool sorted()
{
int i;
for(i = 1; i < n; i ++)
{
if(v[i].nr > v[i + 1].nr)
return 0;
}
return 1;
}
inline int mxa(int a, int b)
{
return (a > b ? a : b);
}
void invSort(int st, int dr)
{
if(st >= dr)
return;
if(st == dr - 1)
{
//printf("%d %d\n", st, dr);
// printf("%d %d\n", v[st].nr, v[dr].nr);
if(v[st].nr > v[dr].nr)
{
aux = v[st];
v[st] = v[dr];
v[dr] = aux;
fprintf(g, "%d %d\n", st, dr);
}
}
int mid = (st + dr) / 2;
invSort(st, mid);
invSort(st + 1, mid);
invSort(mid, dr - 1);
invSort(mid + 1, dr);
}
void solve()
{
//while(sorted() == 0)
invSort(1, n);
invSort(1, n);
invSort(1, n);
invSort(1, n);
invSort(1, n);
}
int main()
{
readFile();
g = fopen("invsort.out", "w");
solve();
fclose(g);
return 0;
}