Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) C
5000的数据量,直接暴力扫!
#include<stdio.h> #include<algorithm> #include<string.h> using namespace std; int map[5001]; int mapp[5001]; int a[5010]; int main() { int n,i,j; while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++) scanf("%d",&a[i]); memset(map,0,sizeof(map)); for(i=1;i<=n;i++) { int maxn=-1; int anss; for(j=1;j<=n;j++) mapp[j]=0; for(j=i;j<=n;j++) { mapp[a[j]]++; if(mapp[a[j]]>maxn) { maxn=mapp[a[j]]; anss=a[j]; } if(mapp[a[j]]==maxn&&a[j]<anss) { anss=a[j]; maxn=mapp[a[j]]; } map[anss]++; } } for(i=1;i<=n;i++) printf("%d ",map[i]); printf("\n"); } return 0; }