蚂蚁感冒蓝桥杯(这个题nyoj有后台数据所以我的代码是有说服力的直接1A)

来源:互联网 发布:怎样安装mysql 编辑:程序博客网 时间:2024/04/29 05:23
/*这个题思路将数字忽略符号排序再讲符号加上,然后判断感冒蚂蚁的方向2种情况,若在与之迎面而来的方向上没有蚂蚁则永远为1,若有则在计算身后与自己方向相同的蚂蚁数量即可详情见代码*/
#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <cstring>using namespace std;int num1[200];//原始 int num2[200];//无符号 int main(){int t;while(scanf("%d", &t) != EOF){memset(num1, 0, sizeof(num1));memset(num2, 0, sizeof(num2));int x, ill;for(int i = 0; i < t; i++){scanf("%d", &num1[i]);num2[i] = abs(num1[i]); }ill = num1[0];sort(num2, num2+t);int flag ;for(int i = 0; i < t; i++){for(int j = 0 ; j < t; j++){if(abs(num1[j]) == num2[i]) num2[i] = num1[j];}if(num2[i] == ill) flag = i;}int cnt1 = 0, cnt2 = 0;//num左 ,num右 if(ill > 0){for(int i = flag+1; i < t; i++){if(num2[i] < 0) cnt1++;}for(int i = 0; i < flag; i++){if(cnt1 == 0) break;if(num2[i] > 0) cnt2++;}}if(ill < 0){for(int i = 0; i < flag; i++){if(num2[i] > 0) cnt2++;}for(int i = flag+1; i < t; i++){if(cnt2 == 0) break;if(num2[i] < 0) cnt1++;}}cout << cnt1+cnt2+1 << endl;}return 0; } 

0 0