Ува онлайн проблема судьи - Как исправить ошибку во время выполнения на вопрос 688

В настоящее время я пытаюсь решить проблему 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 ответ

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

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

Другие вопросы по тегам