eolymp
bolt
Try our new interface for solving problems
Problems

Paint2D

published at 6/7/17, 10:44:58 am

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

published at 3/6/20, 2:52:48 pm

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

published at 3/26/20, 5:35:52 pm

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

published at 1/28/21, 9:29:51 am

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

published at 3/5/24, 6:27:22 pm

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; }

published at 3/5/24, 6:27:25 pm

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; }

published at 4/23/24, 8:07:40 pm

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;

}