您的位置:首页 > 其它

九度 oj 题目1159:坠落的蚂蚁

2017-01-21 13:52 316 查看
http://ac.jobdu.com/problem.php?pid=1159

#include <stdio.h>
#include <algorithm>

typedef struct ant{
int pos,dir;
bool friend operator < (struct ant a, struct ant b){
return a.pos < b.pos;
}
}Ant;

int main(){
//freopen("in/1159.in","r",stdin);
Ant ants[100];
int p,dir,n,Apos = 50;
while(scanf("%d",&n) !=EOF ){
for (int i = 0; i < n; ++i) {
scanf("%d %d",&p,&dir);
ants[i].pos = p,ants[i].dir = dir;
}
std::sort(ants,ants+n);
for (int i = 0; i < n; ++i) {
if(ants[i].dir == 0) Apos = i;
}

int i = Apos-1, j = Apos+1;

//find the first right-directed on left side
while(ants[i].dir == -1) i--;
//find the first left-directed on right side
while(ants[j].dir == 1) j++;

while(i>=0 && j<=n-1){
i--;j++;
while(ants[i].dir == -1) i--;
while(ants[j].dir == 1) j++;
}
if(i<0&&j>n-1) printf("Cannot fall!\n");
else if(i<0) printf("%d\n",ants[j].pos);
else printf("%d\n",100-ants[i].pos);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: