记录编号 395849 评测结果 AAAAAAAAAAA
题目名称 [USACO Nov13]空牛栏 最终得分 100
用户昵称 GravatarJustWB 是否通过 通过
代码语言 C++ 运行时间 1.053 s
提交时间 2017-04-17 13:57:03 内存使用 14.62 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
int n,k,ans,now;
int pan[3000001];
bool p[3000001];
long long x,y,a,b;
vector<int> sum;
int s(int nn)
{
	while(pan[nn])
	{
		int lin=pan[nn]-1;
		pan[nn]=1;p[nn]=0;
		nn++;
		if(nn==n)nn=0;
		pan[nn]+=lin;
	}
}
int main()
{
	freopen("empty.in","r",stdin);
	freopen("empty.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=1;i<=k;i++)
	{
		scanf("%lld%lld%lld%lld",&x,&y,&a,&b);
		for(int j=1;j<=y;j++)
		{
			pan[(a*j+b)%n]+=x;
			p[(a*j+b)%n]=1;
			sum.push_back((a*j+b)%n);
		}
	}
	for(int i=0;i<sum.size();i++)
	{
		if(!p[sum[i]])continue;
		s(sum[i]);
	}
	while(pan[ans])ans++;
	printf("%d",ans);
	return 0;
}