• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
HaibaraAi
博客园    首页    新随笔    联系   管理    订阅  订阅

SOJ 2013年每周一赛第⑨场 A

   1000. Cows in a Row  
 
Time Limit: 1sec    Memory Limit:256MB
Description

Farmer John's N cows (1 <= N <= 1000) are lined up in a row.  Each cow is identified by an integer "breed ID"; the breed ID of the ith cow in the lineup is B(i).

FJ thinks that his line of cows will look much more impressive if there is a large contiguous block of cows that all have the same breed ID.  In order to create such a block, FJ decides remove from his lineup all the cows having a particular breed ID of his choosing.

Please help FJ figure out the length of the largest consecutive block of cows with the same breed ID that he can create by removing all the cows having some breed ID of his choosing.

Input

Line 1: The integer N.  

Lines 2..1+N: Line i+1 contains B(i), an integer in the range 0...1,000,000.

Output

 Line 1: The largest size of a contiguous block of cows with identical breed IDs that FJ can create.

Sample Input
Copy sample input to clipboard
9
2
7
3
7
7
3
7
5
7
Sample Output
4
Hint

 By removing all cows with breed ID 3, the lineup reduces to 2, 7, 7, 7, 7, 5, 7. 

In this new lineup, there is a contiguous block of 4 cows with the same breed ID (7).

Problem Source: 2013年每周一赛第⑨场

 
 
 1 //#pragma comment(linker, "/STACK:1024000000,1024000000")
 2 #include <map>
 3 #include <queue>
 4 #include <vector>
 5 #include <string>
 6 #include <cstdio>
 7 #include <cstring>
 8 #include <iostream>
 9 #include <algorithm>
10 using namespace std;
11 int n, m;
12 #define maxn 1005
13 #define ll long long
14 #define INF 0x7fffffff
15 int a[maxn];
16 int main(){
17     while (~scanf("%d", &n)){
18         for (int i = 1; i <= n; i++){
19             scanf("%d", &a[i]);
20         }
21         a[0] = -INF; a[n + 1] = INF;
22         int ma = a[0];
23         for (int i = 1; i <= n; i++){
24             int k = 1;
25             int t = a[0];
26             for (int j = 1; j <= n+1; j++){
27                 if (a[j] == a[i])continue;
28                 if (a[j] == t)k++;
29                 else{
30                     ma = max(ma, k); k = 1; t = a[j];
31                 }
32             }
33         }
34         printf("%d\n", ma);
35     }
36     return 0;
37 }
View Code
posted @ 2013-10-26 20:03  HaibaraAi  阅读(127)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3