На форумі обговорюються лише питання, пов'язані з олімпіадою
Ви не зайшли.
Дуже хочеться знайти свої помилки, але смостійно це зробити не можу, може тут хтось мені допоможе. 
Calculation
#include <iostream>
using namespace std;
unsigned long long int a, b, result = 0;
short int c[18];
short int numbers = 0;
int rekuw_pow(short int number, short int power);
int main()
{
    //cout << "Input numbers: ";
    cin >> a >> b;
    for(short int i = 0; b != 0; i++, b=b/10)
    {
        c[i] = b%10;
        numbers++;
    }
    for(short int j = 0; j < numbers; j++)
    {
    //    cout << c[j];
    }
    //cout << endl;
    for(short int n = 2; n < 10; n++)
    {
        result = 0;
        //cout << "For module " << n << endl;
        for(short int i = numbers-1, j=1; i >= 0; i--, j++)
        {
            result = result + c[i] * rekuw_pow(n, numbers-j);
            //cout << c[i] * rekuw_pow(n, numbers-j) << " ";
        }
        //cout << endl;
        if(result == a)
        {
            cout //<< endl 
                << n;
            break;
        }
    }
    return 0;
}
int rekuw_pow(short int number, short int power)
{
    unsigned long long int tempNum = 1;
    for(int i = 0; i < power; i++)
    {
        tempNum = tempNum * number;
    }
    return tempNum;
}Rec5
#include <iostream>
using namespace std;
int main()
{
    int x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6 = 0;
    //cout << "Input: ";
    cin >> x1 >> y1 >> x2 >> y2;
    cin >> x3 >> y3 >> x4 >> y4;
    x5 = max(x1, x3); 
    y5 = min(y1, y3); 
    x6 = min(x2, x4); 
    y6 = max(y2, y4);
    if(x5 >= x6 && y5>=y6)
        cout << "0";
    else
    cout << abs (x6 - x5) *  abs (y6 - y5);
    
    return 0;
}Wall
#include <iostream>
using namespace std;
short int N, M, K, rul = 1, ost= 0;
int main()
{
    //cout << "Input N, M, K: ";
    cin >> N >> M >> K;
    short int tempK = K;
    while(M>0)
    {
        if(tempK >= N)
        {
            tempK = tempK - N;
            M--;
        }
        if(tempK < N && tempK >= 0)
        {
            rul++;
            ost = tempK + ost;
            tempK = K - N;
            M--;
        }
        if(M == 0)
            ost = tempK + ost;
    }
    cout << rul << " " << ost;
    return 0;
}TC100
#include <iostream>
using namespace std;
bool tanks[200][200];
short int N, M, K, MAX = 0;
short int c = 0;
int main()
{
    //cout << "Input M, N, K: ";
    cin >> M >> N >> K;
    for(short int i = 0; i < M; i++)
    {
        for(short int j = 0; j < N; j++)
            tanks[i][j] = true;
    }
    for(int i = 0; i < K; i++)
    {
        short int tempX, tempY;
    //    cout << "Input X, Y: " << i+1 << endl;
        cin >> tempX >> tempY;
        tanks[tempX-1][tempY-1] = false;
    }
///Right
    for(short int m = 0; m < M; m++)
    {
        for(short int n = 0; n < N; n++)
        {
            if(tanks[m][n] == false)
                break;
            c++;
        }
    }
    if(c > MAX)
        MAX = c;
//Left
    c = 0;
    for(short int m = 0; m < M; m++)
    {
        for(short int n = N-1; n >= 0; n--)
        {
            if(tanks[m][n] == false)
                break;
            c++;
        }
    }
    if(c > MAX)
        MAX = c;
//Up
    c = 0;
    for(short int n = 0; n < N; n++)
    {
        for(short int m = 0; m < M; m++)
        {
            if(tanks[m][n] == false)
                break;
            c++;
        }
    }
    if(c > MAX)
        MAX = c;
//Down
    c = 0;
    for(short int n = 0; n < N; n++)
    {
        for(short int m = M-1; m >= 0; m--)
        {
            if(tanks[m][n] == false)
                break;
            c++;
        }
    }
    if(c > MAX)
        MAX = c;
        
    cout << MAX;
    return 0;
}Figure
#include <iostream>
using namespace std;
int main()
{
    unsigned int N = 1000000;
    short int a[8][8] = {0};
    short int tempA, tempB = 0;
    unsigned int max = 0;
    //cout << "Input N: ";
    cin >> N;
    for(short int i = 0; i<N; i++)
    {
        cin >> tempA >> tempB;
        a[tempA-1][tempB-1]++;
    }
    for(short int i = 0; i<8; i++)
    {
        for(short int j = 0; j<8; j++)
        {
            if(max < a[i][j])
                max = a[i][j];
        }
    }
    cout << max;
    return 0;
}Відредаговано VIRUS (2011-11-17 22:05:34)
Поза форумом
По figure - відповідь не влазить у 2-х-байтовий short (діапазон - [-32768;32767], тоді як за умовою N може бути до 10^6). Із змінною max проблем немає, але перед тим, як записати відповідь у мах, ця відповідь зберігається в масиві а.
Зараз подивлюсь інші задачі.
Поза форумом
По Wall
ці умови:
if(tempK < N && tempK >= 0)
        {
            rul++;
            ost = tempK + ost;
            tempK = K - N;
            M--;
        }
        if(M == 0)
            ost = tempK + ost;треба поміняти місцями(Якщо M уже дорівнює нулю, то немає сенсу додавати ще рулон, навіть якщо (tempK < N && tempK >= 0).)
Поза форумом
Calculation - точно переповнення. Ти знову під час обчислень використовуєш 64-бітні числа, а повертаєш функціями звичайний інт.
Можливо є й ще якісь помилки - докладно не вчитувався ще.
Відредаговано Dim_ov (2011-11-17 21:50:37)
Поза форумом
Dim_ov написав:
По figure - відповідь не влазить у 2-х-байтовий short (діапазон - [-32768;32767], тоді як за умовою N може бути до 10^6). Із змінною max проблем немає, але перед тим, як записати відповідь у мах, ця відповідь зберігається в масиві а.
Це й була засада...
А по Wall цього я не догадався.
Поза форумом
Dim_ov написав:
Calculation - точно переповнення. Ти знову під час обчислень використовуєш 64-бітні числа, а повертаєш функціями звичайний інт.
Можливо є й ще якісь помилки - докладно не вчитувався ще.
Можете привести приклад, бо я щось не можу знайти.
По rec5 x5, x6, y5, y6 - координаты отриманого прямокутника.
Поза форумом
VIRUS написав:
Можете привести приклад, бо я щось не можу знайти.
дивись на функцію
int rekuw_pow(short int number, short int power)
{
    unsigned long long int tempNum = 1;
    for(int i = 0; i < power; i++)
    {
        tempNum = tempNum * number;
    }
    return tempNum;
}tempNum має 64-бітний тип. Але коли ти пишеш return - перші 32 біти йдуть лісом, бо rekuw_pow() має тип int.
Поза форумом
Цього я не знав. Я не думав, що це має значення. Але тепер буду знати. До речі, коли я тестував я гадаю все влізало в 32 біти. А ось тут...
Відредаговано VIRUS (2011-11-17 21:59:59)
Поза форумом
по TC100 - скоріш за все, якась дрібниця:
---------- input.txt ---------- 200 200 0 ---------- output.txt ---------- 0
коли правильна відповідь - 40000.
Де саме помилка сказати не можу, в усякому разі, поки не прибереш закоментований код - програму важко сприймати
Поза форумом
Поприбирав
Поза форумом
Ага, здається зрозумів rec5.
Ти очікуєш, що тобі дадуть лівий-нижній та правий-верхній координати прямокутників, коли в умові нічого про це не сказано. А як говорить один із законів Мерфі - "Якщо щось може бути витлумачено кількома способами - воно буде витлумачено найбезглуздішим та найнеймовірнішим з них" 
Не варто очікувати від вхідних даних більшого порядку, ніж той, що вказаний у ТУ.
Відредаговано Dim_ov (2011-11-17 22:12:26)
Поза форумом
Я орієнтувався на ТУ, чи Ві хочете сказати що там могли бути і лівий верхній і правий нижній? Якщо так, то як правльно вирішити? У вашому коді мені не дуе вдалося розібратися.
Поза форумом
Dim_ov написав:
У ТС100, здається, теж переповнення.
c має тип short, але за ТУ може приймати значення до 40000. А тип short, на жаль, тільки до 32767
треба було unsigned
Поза форумом
VIRUS написав:
Я орієнтувався на ТУ, чи Ві хочете сказати що там могли бути і лівий верхній і правий нижній? Якщо так, то як правльно вирішити?
Наприклад, якщо вам потрібні правий верхній у x1, y1 та лівий нижній у x2, y2, можна було перевірити:
if(x1<x2)swap(x1,x2); if(y1<y2)swap(y1,y2);
Відредаговано Unknown (2011-11-17 22:18:54)
Поза форумом
В принципі основна проблема - переповнення. Нажаль. Але буду відграватися на наступних турах, хоча вони й складніші.
Поза форумом
Unknown написав:
VIRUS написав:
Я орієнтувався на ТУ, чи Ві хочете сказати що там могли бути і лівий верхній і правий нижній? Якщо так, то як правльно вирішити?
Наприклад, якщо вам потрібні правий верхній у x1, y1 та лівий нижній у x2, y2, можна було перевірити:
Код:
if(x1<x2)swap(x1,x2); if(y1<y2)swap(y1,y2);
(facepalm) а я використовував abs щоб не було від'ємних значень
Поза форумом
VIRUS написав:
Я орієнтувався на ТУ, чи Ві хочете сказати що там могли бути і лівий верхній і правий нижній? Якщо так, то як правльно вирішити? У вашому коді мені не дуе вдалося розібратися.
Ну моя програма, в принципі, теж працює з лівим-нижнім та правим верхнім кутами, але у мене там є шматок коду, який обмінює місцями значення координат, щоб ці умови виконувались.
Але ваша програма, по перше, чекає ще й "правильного" порядку слідування двох прямокутників, а по друге - враховує  тільки ті випадки, коли прямокутники перетинаються кутами. А ще може бути, що один прямокутник повністю всередині іншого, або перетинає тільки одну його сторону.
Завтра я намалюю картинку, яка, можливо, трохи пояснить роботу моєї програми. Сьогодні я вже, мабуть іду в оффлайн
Добраніч 
Поза форумом
Я перевіряв варіант коли один всередені іншого.
Поза форумом
Ось вам контрприклад для вашого коду Rec5: 
27 -135 45 924 74 110 46 236
Відповідь 0.
Поза форумом
Ось ще один, який легше буде намалювати і перевірити:
0 0 7 5 5 1 10 7

Червоним показано відповідь Вашої програми, а зеленим - вірна відповідь. Змінні х5, х6, у5, у6. показано пунктирними лініями
Відредаговано Dim_ov (2011-11-18 13:14:34)
Поза форумом
Вибачте а яку програму Ви використовуєте?
Поза форумом