比赛 |
20160412 |
评测结果 |
TTTTTATTTATTTTTTTTTT |
题目名称 |
非负的部分和 |
最终得分 |
10 |
用户昵称 |
asddddd |
运行时间 |
18.023 s |
代码语言 |
C++ |
内存使用 |
0.27 MiB |
提交时间 |
2016-04-12 11:18:56 |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
struct node{
int v;
node *prev,*next;
node():prev(NULL),next(NULL){
};
};
node * newnode(){
return new node();
};
void init(){
int n,fu=0;
cin>>n;
node *shou=newnode();
cin>>shou->v;
if (shou->v<0) {
fu++;
}
node *cur=shou;
for (int i=1; i<n; i++) {
node *ne=newnode();
int k;
cin>>k;
if (k<0) {
fu++;
}
ne->v=k;
cur->next=ne;
ne->prev=cur;
if (i==n-1) {
shou->prev=ne;
ne->next=shou;
}
}
int tot=n;
cur=shou;
while (tot>1&&fu) {
if (cur->v<0) {
cur->prev->v+=cur->v;
fu--;
if (cur->prev<0) {
fu--;
}
cur->prev->next=cur->next;
cur->next->prev=cur->prev;
tot--;
}
cur=cur->prev;
}
cout<<tot;
}
int main(){
freopen("sumc.in", "r", stdin);
freopen("sumc.out", "w", stdout);
init();
}