首页 > 代码库 > 【BZOJ1058】【ZJOI2007】报表统计 stl模板
【BZOJ1058】【ZJOI2007】报表统计 stl模板
题意题解不多说,以前从来不{屑于}写stl,,今天学一学。。我就是来贴一份{banlakeji的}stl模板的。
代码:
#include <set> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 501000 #define inf 0x3f3f3f3f using namespace std; int n,m; int src[N],last[N]; multiset<int>sorted,listed; int sortmin=inf; char opt[20]; int main() { int i,j,k; int x,y; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { scanf("%d",&src[i]); last[i]=src[i]; sorted.insert(src[i]); } for(i=2;i<=n;i++)listed.insert(abs(src[i]-src[i-1])); multiset<int>::iterator l; for(multiset<int>::iterator it=sorted.begin();it!=sorted.end();++it) { if(it!=sorted.begin())sortmin=min(sortmin,abs(*it-*l)); l=it; } while(m--) { scanf("%s",opt); if(opt[0]=='I') { scanf("%d%d",&x,&y); multiset<int>::iterator it=sorted.insert(y); it--,sortmin=min(sortmin,abs(y-*it)),it++; it++,sortmin=min(sortmin,abs(y-*it)),it--; it=listed.find(abs(last[x]-src[x+1])); listed.erase(it); listed.insert(abs(y-last[x])); listed.insert(abs(src[x+1]-y)); last[x]=y; } else if(opt[4]=='S')printf("%d\n",sortmin); else printf("%d\n",*listed.begin()); } }
【BZOJ1058】【ZJOI2007】报表统计 stl模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。