2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 С++
Сообщение17.04.2009, 08:30 
Помогите плиз : Пусть етот прог на С++ ,виводит "68599529370" при n=19 иначе пусть работает как есть....

Код:
/* vc_cpp */
/*

Швидкий розв'язок задачі

O(n log^2 n)

*/
#include <vector>
#include <queue>
#include <iostream>
#include <fstream>

using namespace std;

#define MAX (1<<20)

ifstream ifs("input.txt");
ofstream ofs("output.txt");
int d, n;
int f[MAX], g[MAX];
long long ans;

void do_sort(int l, int r)
{
    sort(&g[l], &g[r]);
}

long long calc(int level)
{
    int i, l, r, x, j, a, b, y;
    long long c, c1, c2;
    c = c1 = c2 = 0;
    memcpy(g, f, MAX*sizeof(int));
    for (i = 0; i < (1<<(level-1)); ++i)
    {
        c1 = c2 = 0;
        l = i*(1<<(d-level));
        r = (i+1)*(1<<(d-level));
        x = i*(1<<(d-level))+(1<<(d-level-1));
        do_sort(l, x);
        for (j = x; j < r; ++j)
        {
            a = l; b = x;
            do
            {
                y = (a+b)/2;
                if (g[y] < f[j])
                    a = y+1;
                else if (g[y] > f[j])
                    b = y;
            }
            while (a < b);
            y = (a+b)/2;
            c1 += (long long)y - l;
            c2 += (long long)x - y;
        }
        //cout << c1 << " " << c2 << endl;
        c += min(c1, c2);
    }
    return c;
}

int main ()
{
    int i, a, b;

    ifs >> d;
    n = 1<<d;
   for (i = 0; i < n; ++i)
   {
        ifs >> a;
        f[i] = a-1;
   }
    d++;

    ans = 0;
    for (i = 1; i+1 < d; ++i)
        ans += calc(i);

    ofs << ans << endl;

   return 0;
}

 
 
 
 
Сообщение17.04.2009, 11:48 
Код:
if(n == 19){
  ans = 68599529370;
} else {
....

 
 
 
 
Сообщение17.04.2009, 12:49 
а можеш написать полный прог,или сказать где ето вставить ? !

 
 
 
 
Сообщение19.04.2009, 18:17 
=)

 
 
 
 
Сообщение22.04.2009, 01:07 
$100 :lol:

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group