В настоящее время я пытаюсь решить проблему 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 вводится в качестве контрольного примера (как говорится в вопросе) на моем собственном компьютере, но становится ошибкой времени выполнения на веб-сайте.