比赛 20141105 评测结果 WWWAAAAEEE
题目名称 韩信点兵 最终得分 40
用户昵称 冷颜少年 运行时间 0.866 s
代码语言 C++ 内存使用 0.28 MiB
提交时间 2014-11-05 11:35:29
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
int main()
{
	freopen("HanXin.in","r",stdin);
	freopen("HanXin.out","w",stdout);
	long long n,a[11],b[11],p;
	int m,i,j;
	vector<long long> s,t;
	cin>>n>>m;
	for(i=1;i<=m;i++)
	  cin>>a[i]>>b[i];
	for(i=1;i<=m-1;i++)
	  for(j=1;j<=m-i;j++)
		if(a[j]<a[j+1])
		{
			p=a[j];a[j]=a[j+1];a[j+1]=p;
			p=b[j];b[j]=b[j+1];b[j+1]=p;
		}
	p=a[1]+b[1];
	while(p<n)
	{
		s.push_back(p);
		p+=a[1];
	}
	short c[s.size()];
	memset(c,0,sizeof(c));
	for(i=2;i<m;i++)
	{
		p=a[i]+b[i]-1;
		while(p<=s.size())
		{
			c[p]++;
			p+=a[i];
		}
	}
	p=a[m]+b[m]-1;
	while(p<=s.size())
	{
		if(c[p]==m-2) t.push_back(s[p]);
		p+=a[m];
	}
	if(t.empty()) cout<<-1;
	else cout<<n-t[t.size()-1];
	return 0;
}