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 }