時間限制:
10000ms
單點時限:
1000ms
記憶體限制:
256mb
給定包含n個整數的陣列a1, a2, ... an,你可以選擇任意乙個ai,將ai旋轉到陣列第一項,即將陣列變成:
ai, ai+1, ai+2, ... an, a1, a2, ..., ai-1
現在小hi希望旋轉之後的陣列滿足:
對於任意k(1 ≤ i ≤ n),前k項的和都是正數。
例如對於a=[3, -5, 2, -2, 3, 0],旋轉成[3, 0, 3, -5, 2, -2]滿足條件。
請你輸出i,代表將ai旋轉到第一項滿足條件。
如果有多解,你可以輸出任意乙個i。如果無解輸出-1。
第一行包含乙個整數n。
第二行包含n個整數a1, a2, ... an。
對於50%的資料,1 ≤ n ≤ 1000
對於100%的資料,1 ≤ n ≤ 100000, -1000000 ≤ ai ≤ 1000000
乙個整數表示答案。
樣例輸入
6樣例輸出3 -5 2 -2 3 0
5
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
const int maxn = 1e5+1000;
const int inf = 0x3f3f3f3f;
const long long inf = (long long)(inf*inf);
long long a[maxn];
vectormark;
long long pre_sum[maxn],hou_sum[maxn];
void init()
int main(void)
if(sum<=0)
else
int len = mark.size();
int ans;
long long max=-inf;
for(int i=0; i0)}}
printf("%d\n",ans);
}return 0;
}
Offer收割 程式設計練習賽50 迴圈陣列
描述 給定包含n個整數的陣列a1,a2,an,你可以選擇任意乙個ai,將ai旋轉到陣列第一項,即將陣列變成 ai,ai 1,ai 2,an,a1,a2,ai 1 現在小hi希望旋轉之後的陣列滿足 對於任意k 1 i n 前k項的和都是正數。例如對於a 3,5,2,2,3,0 旋轉成 3,0,3,5,...
Offer收割 程式設計練習賽1
做了三題,題目都比較暴力。a題 題意 給你乙個三階的幻方,三階幻方指的是將1 9不重複的填入乙個3 3的矩陣當中,使得每一行 每一列和每一條對角線的和都是相同的。現在準備將乙個三階幻方中的一些陣列抹掉 0代替 交給你來進行還原,並且希望她能夠判斷出究竟是不是只有一組解。如果只有一組解,輸出該三階幻方...
Offer收割 程式設計練習賽7
比較容易想到是o n 2 的解決方案,遍歷n種刪除可能,每次遍歷o n 時間求總高度。前者優化比較困難,因而想辦法優化每次遍歷求高度的時間。由前往後遍歷,當刪除第i個時,先前的排版是連續的,從而通過計數器等累加方法可以求得已完整行的總高度presum,以及當前未完整行的w,h。include def...