垃圾 垃圾啊!!!!
这么水的一题应该分分钟搞定的
错了6次一直往下掉感觉跟脑子有问题一样一直在检查代码,看题意,傻逼的不知道多用几组测试数据
就是最后10分钟 随便试了一组测试数据;
10 2
2 4 7 9 12 14 16 17 21 23
一看就知道自己错在哪里了;就是后面求 t 的前面部分,吧判断条件写错了,他跟 t' 后面部分是不一样的,t后面大于 ,而t前面应该是小于
positive integer(正整数 )
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
int n,k;
const int maxn=1000+5;
int h[maxn];
int a[maxn];
struct Node
{
int x,hi;
char ch;
Node (int xx=0,int hii=0,char chh='-')
{
if(hii<0)
hii=-hii;
x=xx;hi=hii;ch=chh;
}
void print()
{
cout<<ch<<" "<<x<<" "<<hi<<endl;
}
bool operator <(const Node &s)const
{
return x<s.x;
}
};
vector<Node> ans;
int main()
{
cin>>n>>k;
ans.clear();
for(int i=1;i<=n;i++)
{
cin>>h[i];
}
int minn=n;
int t=0;
for(int i=1;i<=n;i++)
{
int num=0;
memset(a,0,sizeof(a));
a[i]=h[i];
int flag=0;
for(int j=i+1;j<=n;j++)
{
a[j]=h[j];
if(a[j]-a[j-1]!=k)
{ a[j]=a[j-1]+k;
num++;
}
}
for(int j=i-1;j>=1;j--)
{
a[j]=h[j];
if(a[j+1]-a[j]!=k)
{num++;
a[j]=a[j+1]-k;
if(a[j]<=0)
{
flag=1;
break;
}
}
}
if(num<minn&&!flag)
{minn=num;
t=i;
}
}
cout<<minn<<endl;
for(int j=t+1;j<=n;j++)
{
int oj=h[j]-h[j-1];
if(oj!=k)
{ h[j]=h[j-1]+k;
if(oj>k)
{
ans.push_back(Node(j,oj-k,'-'));
}
else
ans.push_back(Node(j,k-oj,'+'));
}
}
for(int j=t-1;j>=1;j--)
{
int oj=h[j+1]-h[j];
if(oj!=k)
{ h[j]=h[j+1]-k;
//cout<<h[j]<<endl;
if(oj<k)//wawawawawawawawawawawawawawaw!!!!!!siyuci
{ //cout<<oj-k<<endl;
ans.push_back(Node(j,oj-k,'-'));
}
else
ans.push_back(Node(j,k-oj,'+'));
}
}
//cout<<t<<endl;
sort(ans.begin(),ans.end());
for(int i=0;i<ans.size();i++)
ans[i].print();
// cout << "Hello world!" << endl;
return 0;
}