比赛 |
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;
}