eolymp
bolt
Try our new interface for solving problems
dərc olunub 07.06.17 10:44:58

Можно ли провести операции тольк частью рисунка?

dərc olunub 06.03.20 14:52:48

Добрый день. Вопрос по условию. Можно ли вставлять скопированное в любое место прямоугольника А*В или обязательно касаться тех квадратиков-прямоугольников, которые были вставленны до?

dərc olunub 26.03.20 17:35:52

можно в любое место

dərc olunub 28.01.21 09:29:51

чи можуть фігури накладатися?

dərc olunub 05.03.24 18:27:22

include <bits/stdc++.h>

using namespace std; long long ans = 1; int main(){ int a; cin>>a; long long eded = 3; for(int i = 2;i<=a;i++){ eded = eded*2; } cout<<eded; }

dərc olunub 05.03.24 18:27:25

include <bits/stdc++.h>

using namespace std; long long ans = 1; int main(){ int a; cin>>a; long long eded = 3; for(int i = 2;i<=a;i++){ eded = eded*2; } cout<<eded; }

dərc olunub 23.04.24 20:07:40

include <iostream>

using namespace std;

define N 1001

define INF 2000000000

long dp[N][N];

int main() {

int a, b;
cin >> a >> b;
if (a < b) swap(a, b);
for (int i = 0; i <= a; ++i)
    for (int j = 0; j <= a; ++j) dp[i][j] = INF;

dp[1][1] = 4;
for (int i = 1; i <= a; ++i)
{
    for (int buf = 1; buf <= i; ++buf)
    {
        long tmp = dp[i - buf][buf] + 2;
        if (tmp < dp[i][buf]) dp[i][buf] = tmp;
        for (int j = 1; j < buf; ++j)
        {
            if (dp[i][j] + 2 < dp[i][buf]) dp[i][buf] = dp[i][j] + 2;
            else if (dp[i][buf] + 2 < dp[i][j]) dp[i][j] = dp[i][buf] + 2;
        }
    }
}
long MIN = dp[a][a];
if (b == 1)
{
    MIN = INF;
    for (int i = 1; i <= a; ++i) if (dp[a][i] < MIN) MIN = dp[a][i];
    cout << MIN;
    return 0;
}
a = b;
for (int i = 0; i <= a; ++i)
    for (int j = 0; j <= a; ++j) dp[i][j] = INF;

dp[1][1] = MIN;
for (int i = 1; i <= a; ++i)
{
    for (int buf = 1; buf <= i; ++buf)
    {
        long tmp = dp[i - buf][buf] + 2;
        if (tmp < dp[i][buf]) dp[i][buf] = tmp;
        for (int j = 1; j < buf; ++j)
        {
            if (dp[i][j] + 2 < dp[i][buf]) dp[i][buf] = dp[i][j] + 2;
            else if (dp[i][buf] + 2 < dp[i][j]) dp[i][j] = dp[i][buf] + 2;
        }
    }
}
MIN = INF;
for (int i = 1; i <= a; ++i) if (dp[a][i] < MIN) MIN = dp[a][i];
cout << MIN;
return 0;

}