AcWing 4780. 等差数列
原题链接
中等
作者:
Love_cheng
,
2023-01-03 23:07:54
,
所有人可见
,
阅读 173
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int n,m;
int a[N];
int work(int k,bool flag = false)
{
int res=0;
for(int i=1;i<=n;i++)
{
int b=a[k]+(i-k)*m;
if(b<=0) return n;
if(b!=a[i])
{
res++;
if(flag)
{
if(b>a[i]) printf("+ %d %d\n",i,b-a[i]);
else printf("- %d %d\n",i,a[i]-b);
}
}
}
return res;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
int res=n;
for(int i=1;i<=n;i++)
{
res=min(res,work(i));
}
cout<<res<<endl;
for(int i=1;i<=n;i++)
{
if(work(i)==res)
{
work(i,true);
break;
}
}
return 0;
}