#include <limits.h>
#include <stdio.h>
#include <string.h>
#define N (sizeof(a) / sizeof(a[0]))
inline int sign(int d)
{
if (d == 0)
return 0;
return d < 0 ? -1 : 1;
}
inline int abs(int v)
{
return v < 0 ? -v : v;
}
int main()
{
int a[] = {2, 1, 3, 4, 0};
int q[N];
for (;;) {
int best_profit = INT_MIN;
int best_src = -1;
int best_dst = -1;
int i, src, dst, tmp;
for (i = 0; i < N; ++i)
q[i] = i - a[i];
for (src = 0; src < N; ++src)
for (dst = 0; dst < N; ++dst) {
int d = sign(dst - src);
int profit = abs(q[src]) - abs(q[src] + dst - src);
//printf("...%d -> %d: profit = %d", src, dst, profit);
for (i = src + d; i != dst + d; i += d) {
if (sign(q[i]) == d) {
++profit;
//printf(" + 1");
} else {
--profit;
//printf(" - 1");
}
}
//printf(" = %d\n", profit);
if (profit > best_profit) {
best_src = src;
best_dst = dst;
best_profit = profit;
//printf("... -- new best!\n");
}
}
printf("%d -> %d (profit = %d)\n", best_src, best_dst, best_profit);
if (best_profit == 0)
break;
tmp = a[best_src];
if (best_dst < best_src)
memmove(a + best_dst + 1, a + best_dst, (best_src - best_dst) * sizeof(int));
else
memmove(a + best_src, a + best_src + 1, (best_dst - best_src) * sizeof(int));
a[best_dst] = tmp;
for (i = 0; i < N; ++i)
printf("%d ", a[i]);
printf("\n");
}
return 0;
}
В чем суть?
Удобнее было бы сделать в виде форума или хотя бы на одной странице в древовидном формате, а то переключаться между каждым письмом туда-сюда, как-то не очень
Как подписаться/задать вопрос в подобный maillist?
Неужели СТАНДАРТНАЯ БИБЛИОТЕКА (которая почти часть языка) это какой-то секрет?
T f();
...
const T& obj = f();
obj.foo();
T f();
...
const T* const obj = &(f());
obj->foo();
mov edx, [arr16] ; заносим в edx первый элемент массива
mov eax, [arr16+4] ; заносим в eax второй элемент массива
откуда программа может знать где окажутся ее данные чтобы самой указать это значение?
Студии и GCC не нравится двоеточие.
$ cat rdtsc.c
void f(unsigned long *low, unsigned long *high)
{
asm("rdtsc\n":"=a"(*low), "=d"(*high));
}
$ gcc -O2 -S -W -Wall rdtsc.c
$ cat rdtsc.s
.file "rdtsc.c"
.text
.p2align 4,,15
.globl f
.type f, @function
f:
.LFB0:
.cfi_startproc
#APP
# 3 "rdtsc.c" 1
rdtsc
# 0 "" 2
#NO_APP
movq %rax, (%rdi)
movq %rdx, (%rsi)
ret
.cfi_endproc
.LFE0:
.size f, .-f
.ident "GCC: (GNU) 4.7.2 20121109 (Red Hat 4.7.2-8)"
.section .note.GNU-stack,"",@progbits
В чем я ошиблась?
можно ли вызвать функцию из конструктора класса?
Students::Students(std::string name, std::string last_name) { Students::set_name(name); // Вызываем(создаем) функцию с фактическим параметром Students::set_last_name(last_name); // тоже самое. Можно ли так делать? }
class Students
{
...
std::string name_;
std::string last_name_;
...
};
Students::Students(const std::string& name, const std::string& last_name): name_(name), last_name_(last_name)
{
}
из-за размера файла (например в 3Гб) не хватает памяти и соответственно этот вариант отпадает.
Минус в том и другом случае это отдельная лексема?
Если это так, то как сказать распознавателю, что -1 неделимая структура?