CF 27C
来源:互联网 发布:站长之家 域名排名 编辑:程序博客网 时间:2024/04/29 04:42
题目:http://codeforces.com/problemset/problem/27/C
这题 很多人直接用的一个for循环。。解决的。我不怎么理解。这题我是用的树状数组。
统计两个东西。 1 统计a[i]左边,比a[i]小的和比a[i]大的个数。 2统计a[i]右边,比a[i]小 和比a[i]大的个数。
然后根据题意。任意选择一组合适得到解即可。
#include <cmath>#include <ctime>#include <iostream>#include <string>#include <vector>#include <cstdio>#include <cstdlib>#include <cstring>#include <queue>#include <map>#include <set>#include <algorithm>#include <cctype>#include <stack>#include <deque>using namespace std;typedef long long LL;#define eps 10e-9#define inf 0x3f3f3f3fconst int maxn = 100000+100;int a[maxn],c1[2001000],c2[2001000];int lowbit(int x) { return x&-x;}void add(int x,int add,int c[]){ while(x<2000000){ c[x]+=add; x+=lowbit(x); }}int sum(int x,int c[]){ int ret=0; while(x>0){ ret+=c[x]; x-=lowbit(x); } return ret;}int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]),a[i]+=1000000; for(int i=0;i<n;i++){ add(a[i],1,c2); } int flag1=0,flag2=0; int a1,a2,a3; for(int i=0;i<n;i++){ int s1=sum(a[i]-1,c1); int s2=sum(a[i]-1,c2); // printf("%d %d\n",s1,s2); if(s1>0&&s2>0){ flag1=1;a2=i; break; } s1=sum(a[i],c1); s2=sum(a[i],c2); s1=i-s1; s2=n-i-s2; add(a[i],-1,c2); add(a[i],1,c1); // printf("%d %d\n",s1,s2); if(s1>0&&s2>0){ flag2=1;a2=i; break; } } if(flag1){ for(int i=0;i<a2;i++){ if(a[i]<a[a2]){ a1=i; break; } } for(int i=a2+1;i<n;i++){ if(a[i]<a[a2]){ a3=i; break; } } printf("3\n"); printf("%d %d %d\n",a1+1,a2+1,a3+1); } else if(flag2){ for(int i=0;i<a2;i++){ if(a[i]>a[a2]){ a1=i; break; } } for(int i=a2+1;i<n;i++){ if(a[i]>a[a2]){ a3=i; break; } } printf("3\n"); printf("%d %d %d\n",a1+1,a2+1,a3+1); } else printf("0\n"); return 0;}
- CF 27C
- CF 27C Unordered Subsequence
- CF 190C STL
- CF 79C. Beaver
- CF 229C Triangles
- CF 4 C
- cf 230c
- CF 255C
- CF 52C
- CF 190C
- CF 191 div2 C
- CF 143 div2 C
- CF-div2-192-C
- cf 100 c(greedy)
- CF 188 (div2 C)
- cf-337C Quiz
- CF - 44C - Holidays
- CF 20C
- js实现json数据行到列的转换
- BOOST::Format
- VIM复制粘贴大全!
- 黑马程序员---java基础---02java基础语法(01)
- IE CSS hack
- CF 27C
- jQuery Mobile使用
- 内连接<inner join>,左外连接<left outer join>,右外连接<right outer join>
- 关于Linux下的crypt加密
- VC GetSafeHwnd 和 AfxGetApp
- 真正有效的U盘分区方法
- mysql_fetch_row(),mysql_fetch_array()
- 项目管理心得:一个项目经理的个人体会、经验总结
- AJAX异步取缓存数据(先挖个坑,留着以后再用)