PDA

View Full Version : runtimr error در codeforces



sa1378
جمعه 09 آبان 1393, 10:43 صبح
سلام
این کد من که برای این مساله (http://codeforces.com/contest/474/problem/B) زدم درست هست و اجرا میشه ولی سایت میگه ران تایم ارور داره
چرا؟
#include <iostream>
#include <vector>
#define N (100*1000 + 100)
using namespace std;
int piles,a[N],juicy,num[N],sum[N],mark[N*10],low,high,point;


void input() //CORRECT
{
cin>>piles;
for(int i=0;i<piles;i++)
cin>>a[i];
cin>>juicy;
for(int i=0;i<juicy;i++)
cin>>num[i];
}

void prp() //CORRECT
{
sum[0]=a[0];
for(int i=1;i<piles;i++)
sum[i]=sum[i-1]+a[i];

high=sum[0];
point=1;
for(int i=0;high<=sum[piles-1];i++)
{
if(i>high)
{
point++;
high=sum[point-1];
}
mark[i]=point;
}
}
void output()
{
for(int i=0;i<juicy;i++)
{
cout<<mark[num[i]]<<"\n";
}
}

int main() {
input();
prp();
output();
return 0;
}
راستی کد من 5mb حافظه گرفته ولی یه کد دسدم که 30mb حافظه گرفته بود و اکسپت شده بود

a.r.khoshghalb
جمعه 09 آبان 1393, 12:21 عصر
شما توی خط 26 اومدی یه فور زدی روی i و گفتی تا وقتی که high به [sum[piles-1 نرسیده زیاد بشه i!
خوب شاید sum هات خیلی بزرگ شن و قبل اینکه high بهشون برسه i بزرگتر از طرفیت آرایه mark بشه!
این کد من برای اون سواله (فقط تابع main مدنظره، بالاش چیزهای دیگه ایه) :
http://codeforces.com/contest/474/submission/8109374

sa1378
جمعه 09 آبان 1393, 13:48 عصر
شما توی خط 26 اومدی یه فور زدی روی i و گفتی تا وقتی که high به [sum[piles-1 نرسیده زیاد بشه i!
خوب شاید sum هات خیلی بزرگ شن و قبل اینکه high بهشون برسه i بزرگتر از طرفیت آرایه mark بشه!
این کد من برای اون سواله (فقط تابع main مدنظره، بالاش چیزهای دیگه ایه) :
http://codeforces.com/contest/474/submission/8109374


sum[i] میشه مجموع تپه های 0 تا i و ظرفیت مارک هم جمع همه ی تپه هاست
پس نباید بزرگتر بشه

a.r.khoshghalb
جمعه 09 آبان 1393, 14:51 عصر
متوجه منظورم نشدی.
منظورم از ظرفیت mark تعداد خونه های mark بود.

sa1378
جمعه 09 آبان 1393, 16:09 عصر
متوجه منظورم نشدی.
منظورم از ظرفیت mark تعداد خونه های mark بود.

آرایه مارک تو کد من 6^10 تایی هست
سوال هم گفته حداکثر تعداد کرم ها اینقدره