CodeForces
来源:互联网 发布:网络监控手机 编辑:程序博客网 时间:2024/06/05 02:34
题目链接:http://codeforces.com/problemset/problem/359/D点击打开链接
#include <iostream>#include <stdio.h>#include <set>#include <vector>#include <map>#include <algorithm>#include <string>#include <cstring>#include <limits.h>#include <math.h>#include <stack>#include <queue>using namespace std;int gcd(int x,int y){ if(x%y==0||y%x==0) return 1; return 0;}int a[300010];int la[300010];int ra[300010];set<int > q;set<int > ::iterator it;int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); stack<int > s; for(int i=1;i<=n;i++) { la[i]=i; if(s.empty()) { s.push(i); } else { while(!s.empty()) { if(a[s.top()]%a[i]==0) { la[i]=la[s.top()]; s.pop(); } else if(a[i]%a[s.top()]==0) { s.push(i); break; } else { s.push(i); break; } } if(s.empty()) s.push(i); } } while(!s.empty()) s.pop(); for(int i=n;i>=1;i--) { ra[i]=i; if(s.empty()) { s.push(i); } else { while(!s.empty()) { if(a[s.top()]%a[i]==0) { ra[i]=ra[s.top()]; s.pop(); } else if(a[i]%a[s.top()]==0) { s.push(i); break; } else { s.push(i); break; } } if(s.empty()) s.push(i); } } int maxn=0;int cnt=0; for(int i=1;i<=n;i++) maxn=max(maxn,ra[i]-la[i]); for(int i=1;i<=n;) if((ra[i]-la[i])==maxn) cnt++,q.insert(la[i]),i=(ra[i]+1); else i++; printf("%d %d\n",cnt,maxn); for(it=q.begin();it!=q.end();it++) printf("%d ",(*it));}
阅读全文
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- 1006.Do the Untwist
- .Net面试经历(1)
- eclipse导入项目后打开html文件乱码问题
- Activity生命周期
- qemu-nbd 挂载
- CodeForces
- Java集合框架
- Systemtap简介
- Kotlin 学习之数据类型
- CDH5.X完全卸载步骤
- 众多中缀运算符的调用机制
- Redis 常用命令汇总
- 嵌入式使用Symmetricds进行数据库同步
- js中,if条件为 null/undefined/0/NaN/"",结果均被解释为false