POJ 3320 Jessica's Reading Problem G++

来源:互联网 发布:餐饮收银软件 编辑:程序博客网 时间:2024/06/06 15:44

#include <cstdio>#include <map>#include <set>using namespace std;//挑战程序设计竞赛 例题 //抄书 using namespace std;int a[1000001];int main(){int P; scanf("%d",&P);set<int> all;for(int i=0;i<P;i++){scanf("%d",&a[i]);//cin>>a[i];all.insert(a[i]);}int n=all.size();int s=0,t=0,num=0;map<int,int> count;int res=P;for(;;){while(t<P&&num<n){if(count[a[t++]]++==0){num++;}}if(num<n){break;}res=min(res,t-s);if(--count[a[s++]]==0){num--;}}printf("%d\n",res);return 0;} 

P页书,每页有且仅有一个知识点。求最少阅读连续的多少页能覆盖所有的知识点。