Pagini recente » Cod sursa (job #1282906) | Cod sursa (job #2984952) | Cod sursa (job #2496850) | Cod sursa (job #2180434) | Cod sursa (job #542465)
Cod sursa(job #542465)
#include <algorithm>
#include <cstring>
#include <fstream>
using namespace std;
const char Input[] = "sortari2.in";
const char Output[] = "sortari2.out";
const int Dim = 1001;
const int Mod = 999017;
int N, XXX;
int p[Dim], aux[Dim];
inline int SortI() {
int i, j, cnt;
cnt = 0;
memcpy( aux, p, sizeof( p ) );
for( i = 1; i <= N; ++i )
if( aux[i] != i ) {
for( j = i + 1; j <= N; ++j )
if( aux[j] == i ) {
swap( aux[i], aux[j] );
break;
}
++cnt;
}
return cnt;
}
inline int SortB() {
bool ok;
int i, cnt;
cnt = 0;
memcpy( aux, p, sizeof( p ) );
do {
ok = false;
for( i = 1; i < N; ++i )
if( aux[i] > aux[i + 1] ) {
swap( aux[i], aux[i + 1] );
++cnt;
ok = true;
}
}
while( ok == true );
return cnt;
}
int main() {
ifstream fin( Input );
ofstream fout( Output );
int i;
fin >> N;
for( i = 1; i <= N; ++i )
p[i] = i;
do {
if( SortI() < SortB() ) {
++XXX;
if( XXX > Mod )
XXX -= Mod;
}
}
while( next_permutation( p + 1, p + N + 1 ) );
fout << XXX % Mod;
fin.close();
fout.close();
return 0;
}