Форум программистов, компьютерный форум CyberForum.ru

Задача "Строение" - C++

Восстановить пароль Регистрация
 
nuts23
0 / 0 / 0
Регистрация: 22.06.2013
Сообщений: 30
01.07.2013, 14:42     Задача "Строение" #1
Здравствуйте.
Проблема с решением задачи "Строение" (_http://********/index.asp?main=task&id_task=501).
Администрация города подбирает площадку для строительства новых спортивных сооружений. На рассмотрении несколько проектов, каждый проект требует выделения некоторого прямоугольного участка земли. Некоторые участки оказались частично или полностью в пользовании частными лицами, а в случае утверждения проекта администрация будет вынуждена выкупить этот участок, поэтому для определения стоимости очень важно знать площадь пересечения участков. Участки частников также прямоугольной формы (рис. 1) и стороны всех участков параллельны координатным осям. Для каждого проекта был построен план, включающий подобранный участок и его окружение. В приведенном примере показано пересечение участков частников (тонкая линия) с участком, подобранным для строительства (толстая линия). Помогите определить суммарную площадь пересечения участков частников с участком, выбранным для строительства.

Входные данные

В первой строке входного файла INPUT.TXT содержится число N - количество участков частников, отображенных на плане. Затем следуют N строк с координатами двух вершин этих прямоугольных участков. В последней строке плана координаты участка, подобранного для строительства. Координаты противоположных вершин одного прямоугольника описываются в формате X1 Y1 X2 Y2. Координатами вершин являются целые, неотрицательные числа, не больше 100. Количество исходных прямоугольников не больше 20.

Выходные данные

В единственную строку выходного файла OUTPUT.TXT следует вывести одно целое число – искомую суммарную площадь пересечения прямоугольников.
Моё решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <stdio.h>
#include <math.h>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>
 
int main()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    int A[100][100];
    for (int i = 0; i < 100; ++i)
        for (int j = 0; j < 100; ++j)
        {
            A[i][j] = 0;
        }
    int N;
    scanf("%d", &N);
    int X1[20];
    int Y1[20];
    int X2[20];
    int Y2[20];
    for (int i = 0; i < N; ++i)
        scanf("%d%d%d%d", &X1[i], &Y1[i], &X2[i], &Y2[i]);
    int x3, y3, x4, y4;
    scanf("%d%d%d%d", &x3, &y3, &x4, &y4);
    for (int k = 0; k < N; ++k)
    {
        for (int i = X1[k]; i <= X2[k]; ++i)
            for (int j = Y1[k]; j <= Y2[k]; ++j)
                A[i][j] += 1;
    }
    int S;
    S = 0;
    for (int i = x3+1; i < x4; ++i)
        for (int j = y3+1; j < y4; ++j)
        if (A[i][j] >= 1)
            S += A[i][j];
    printf("%d", S);
    return 0;
}
Исключая по одной клетке с проекта возникает проблема с 4 тестом - WA, + если совпадающие проекты с участком частника
Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nuts23
0 / 0 / 0
Регистрация: 22.06.2013
Сообщений: 30
04.07.2013, 11:34  [ТС]     Задача "Строение" #2
Всё ещё нужна помощь.
W910
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 16
08.07.2015, 16:41     Задача "Строение" #3
Нужна помощь тоже

Добавлено через 7 минут
Вы ее не решили?
Excalibur921
427 / 236 / 37
Регистрация: 12.10.2013
Сообщений: 1,802
08.07.2015, 17:00     Задача "Строение" #4
Интересно у вас айпи одно, или просто согрупники .
magirus
08.07.2015, 17:23     Задача "Строение"
  #5

Не по теме:

Excalibur921, у них разница в два года...

Yandex
Объявления
08.07.2015, 17:23     Задача "Строение"
Ответ Создать тему
Опции темы

Текущее время: 02:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru