序列变换
时间限制:1秒 内存限制:256M
【题目描述】
给定一个由n个整数 \(x_1, x_2,…x_n\) 组成的序列,其中:\(-1≤x_i≤1\)。可以对序列进行变换操作,每次一操作对于任何 \(1≤i<n\),可以将 \(x_{i+1}\) 改为 \(x_{i+1}+x_i\)。
要将初始序列转换为非递减的,即 \(x_1≤x_2≤…≤x_n\),变化后还是要保证 \(-1≤x_i≤1\)。那么最少要操作多少次?。
【输入格式】
第一行包含一个整数 \(n(1≤n≤1000000)\),表示初始序列中的元素个数。
第二行包含 \(n\) 个整数 \(x_1, x_2,…x_n\),表示初始序列。
【输出格式】
如果无法转换成非递减序列,则输出单词 Impossible;否则,输出一个整数,表示做少的操作次数。
【输入输出样例】
Input
6
-1 1 0 -1 0 1
Output
3
【数据限制】
对于30% 的数据满足:\(1≤n≤500\)。
对于60% 的数据满足:\(1≤n≤10000\)。
对于100% 的数据满足:\(1≤n≤1000000\)。
【来源】
Mr.he