/ Randle /

记录详情

Time Exceeded


  
# 状态 耗时 内存占用
#1 Accepted 3ms 356.0 KiB
#2 Accepted 3ms 368.0 KiB
#3 Accepted 3ms 344.0 KiB
#4 Accepted 7ms 368.0 KiB
#5 Accepted 49ms 340.0 KiB
#6 Accepted 79ms 352.0 KiB
#7 Accepted 927ms 348.0 KiB
#8 Time Exceeded ≥1007ms ≥372.0 KiB
#9 Time Exceeded ≥1007ms ≥384.0 KiB
#10 Time Exceeded ≥1007ms ≥384.0 KiB

代码

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdio>
using namespace std;
#define maxn 10010
int a[maxn];
int n,m,t;
int pre[maxn];
int c[maxn];//差分优化
int ans[maxn];

int read()
{
	int x=0;
	int f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')
		{
			f=-1;
		}
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x=x*10+ch-'0';
		ch=getchar();
	}
	return x*f;
	
}
int main()
{
	cin>>n>>m>>t;
	memset(c,0,sizeof(c));
	while(m--)
	{
		int maxm=0;
		int l=0,r=0;
		pre[0]=0;
		for(register int i=1;i<=n;i++)
		{
			a[i]=read();
			pre[i]=pre[i-1]+a[i];
		}
		for(register int i=0;i<=n;i++)
		{
			for(register int j=i;j<=min(n,i+t);j++)
			{
				int temp=pre[j]-pre[i];
				if(temp>maxm)
				{
					l=i;
					r=j;
					maxm=temp;
				}
				if(temp==maxm)
				{
					if(j-i>r-l)
					{
						l=i;
						r=j;
					}
					
				}
			}
		}

		c[l+1]++;
		c[r+1]--;
	}
	ans[0]=0;
	
	for(register int i=1;i<=n;i++)
	{
		ans[i]=ans[i-1]+c[i];
	}

	for(register int i=1;i<=n;i++)
	{
		printf("%d ",ans[i]);
	}
	return 0;
}

信息

递交者
类型
递交
题目
骂战(原创)
题目数据
下载
语言
C++
递交时间
2017-10-12 10:22:08
评测时间
2017-10-12 10:22:52
评测机
分数
70
总耗时
≥4097ms
峰值内存
≥384.0 KiB