请问这个程序在oj为什么输出超限呢?

题目是输出500以内的勾股数

#include<iostream>
#include<math.h>
using namespace std;

int main()

{
    for (int a = 1; a <= 500; a++)
    {

        for (int b = a + 1; b <= 500; b++)

        {
            int c = (int)sqrt(a*a + b * b);

            if (c*c == a * a + b * b && a + b > c && a + c > b && b + c > a && c <= 500)

            {
                cout << a << " " << b << " " << c << endl;

            }
        }
        
    }
    return 0;
}