hdu5174---Ferries Wheel

2015-07-20 17:16:29 · 作者: · 浏览: 5

注意要记录每一个数的出现次数,然后对数组排序,去重,再按题目的意思计算,注意用int会溢出

/*************************************************************************
    > File Name: bc30-a.cpp
    > Author: ALex
    > Mail: zchao1995@gmail.com 
    > Created Time: 2015年02月14日 星期六 18时53分26秒
 ************************************************************************/

#include  #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
          
            #include 
           
             #include 
            
              #include 
             
               using namespace std; const double pi = acos(-1); const int inf = 0x3f3f3f3f; const double eps = 1e-15; typedef long long LL; typedef pair 
              
PLL; const LL mod = 2147483647; LL arr[111]; map re; int main () { int n; int icase = 1; while (~scanf("%d", &n)) { re.clear(); for (int i = 1; i <= n; ++i) { scanf("%I64d", &arr[i]); re[arr[i]]++; } printf("Case #%d: ", icase++); sort (arr + 1, arr + 1 + n); n = unique (arr + 1, arr + 1 + n) - arr - 1; if (n == 1) { printf("-1\n"); continue; } int ans = 0; for (int i = 1; i <= n; ++i) { if (i == 1) { if ((arr[n] + arr[1]) % mod == arr[2]) { ans += re[arr[1]]; } } else if (i == n) { if ((arr[n - 1] + arr[n]) % mod == arr[1]) { ans += re[arr[n]]; } } else { if ((arr[i - 1] + arr[i]) % mod == arr[i + 1]) { ans += re[arr[i]]; } } } printf("%d\n", ans); } return 0; }