Ува онлайн проблема судьи - Как исправить ошибки во время выполнения на вопрос 688 - PullRequest
0 голосов
/ 02 июня 2019

В настоящее время я пытаюсь решить проблему 688 на веб-сайте онлайн-судьи UVA. Я написал код, который работает на моей платформе, но он возвращает ошибку времени выполнения на веб-сайте. Как мне это решить?

Я пытался использовать оба вектора и новый int для массива, так как это единственная возможная проблема, о которой я мог думать, но ни один из них не работал.

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n, i, j, k, t=0, m=0;
    float x, y, r;
    int *a = new int[1000000]; 
    while(cin>>n, n>0)
    {
        t=0;
        for(i=0; i<n; i++)
        {
            cin>>x>>y>>r;
            x*=10;
            y*=10;
            r*=10;
            for(j=x-r; j<x+r; j++)
            {
                for(k=y-r; k<y+r; k++)
                {
                    if(a[j*1000+k]<=m)
                    {
                        a[j*1000+k]=m+1;
                        t++;
                    }
                }
            }
        }
        cout<<++m<<" ";
        cout<<setprecision(2)<<fixed;
        cout<<(float)t/100<<endl;
    }
    delete[] a;
    return 0;
}

Задача состоит в том, чтобы рассчитать общую площадь, покрытую несколькими квадратами, которые могут или не могут перекрываться. Я использую новую систему int для создания массива для области 1000000 (именно этого требует вопрос). Он выдает правильные ответы и останавливается, когда 0 вводится в качестве контрольного примера (как говорится в вопросе) на моем собственном компьютере, но становится ошибкой времени выполнения на веб-сайте.

1 Ответ

0 голосов
/ 02 июня 2019

Ошибка времени выполнения в основном из-за типа данных переменных и их использования. Вы присваиваете float переменную int и выполняете некоторые операции над ней

Кроме того, вы должны рассмотреть возможность объявления переменных там, где это необходимо.

...