ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Общий форум

Help me!!!!!
Послано RAVEman 1 окт 2004 16:41
Tell me please why I got Memory Limit Exeeded.

// problem 1100

#include<stdio.h>

long id[150001L];
int m[150001L];
long pr[101],i,j,n;

int main()
{
    scanf("%ld",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%ld %d",&id[i],&m[i]);
        pr[m[i]]++;
    }
    for(i=100;i>=0;i--)
    {
        j=1;
        while(pr[i]!=0)
        {
            if(m[j]==i)
            {
                printf("%ld %d\n",id[j],m[j]);
                pr[i]--;
            }
            j++;
        }
    }
    return 0;
}
Because your prog use 150000*(4+2)=900K memory. The more-than-200K memory used by the compiler included, you get MLE.
Послано Maigo Akisame (maigoakisame@yahoo.com.cn) 2 окт 2004 07:04
In fact, if you use C, you can use only a bit more than 700KB. For Pascalers, there's only 627KB.
Your prog use 150000*(4+4)=1200K of memory, sizeof(int)==4. (-)
Послано Problemset Maintainer 3 окт 2004 01:18