C-Exception Handling(AtCoder Beginner Contest 134)

AtCoder刚注册就随便点了个比赛来写,没想到被C题卡了一发tle一发wa,过于丢人,水个博客纪念一下。

传送门:https://atcoder.jp/contests/abc134/tasks/abc134_c

题意就是输入N个数字后按顺序每次输出除Ai外最大的数字。

一开始偷懒想着直接两个for循环于是tle了

 1 #include<stdio.h>
 2 #include<string.h>
 3 const int maxn =2e5+10;//一定要开大一点,我就是因为没开够(2e5)wa了一发
 4 int main(){
 5     int n,flag=-1;
 6     int a[maxn],Max[maxn];
 7     memset(Max,0,sizeof(Max));
 8     scanf("%d",&n);
 9     for(int i=1;i<=n;i++){
10         scanf("%d",&a[i]);
11         Max[a[i]]++;
12         if(flag<a[i])
13             flag=a[i];
14     }
15     for(int i=1;i<=n;i++){
16         Max[a[i]]--;
17         for(int j=flag;j>=0;j--){
18             if(Max[j]!=0){
19                 printf("%d
",j);
20                 break;
21             }
22         }
23         Max[a[i]]++;
24     }
25     return 0;
26 }