10 条题解

  • 1
    @ 2023-7-6 15:43:10
    #include <bits/stdc++.h>
    const int N = 100005;
    int rt,tot,fa[N],ch[N][2],val[N],cnt[N],sz[N];
    struct Splay {
    	void maintain(int x){
    		sz[x]=sz[ch[x][0]]+sz[ch[x][1]]+cnt[x];
    	}
    	bool get(int x){
    		return x==ch[fa[x]][1];
    	}
    	void clear(int x){
    		ch[x][0]=ch[x][1]=fa[x]=val[x]=sz[x]=cnt[x]=0;
    	}
    	void rotate(int x){
    		int y=fa[x],z=fa[y],chk=get(x);
    		ch[y][chk]=ch[x][chk^1];
    		if(ch[x][chk^1])fa[ch[x][chk^1]]=y;
    		ch[x][chk^1]=y;
    		fa[y]=x;
    		fa[x]=z;
    		if(z)ch[z][y==ch[z][1]]=x;
    		maintain(y);
    		maintain(x);
    	}
    	void splay(int x){
    		for (int f=fa[x];f=fa[x],f;rotate(x)){
    			if(fa[f])rotate(get(x)==get(f)?f:x);
    		}
    		rt=x;
    	}
    	void ins(int k){
    		if(!rt){
    			val[++tot]=k;
    			cnt[tot]++;
    			rt=tot;
    			maintain(rt);
    			return;
    		}
    		int cur=rt,f=0;
    		while(1){
    			if(val[cur]==k){
    				cnt[cur]++;
    				maintain(cur);
    				maintain(f);
    				splay(cur);
    				break;
    			}
    			f=cur;
    			cur=ch[cur][val[cur]<k];
    			if(!cur){
    				val[++tot]=k;
    				cnt[tot]++;
    				fa[tot]=f;
    				ch[f][val[f]<k]=tot;
    				maintain(tot);
    				maintain(f);
    				splay(tot);
    				break;
    			}
    		}
    	}
    	int rk(int k){
    		int res=0,cur=rt;
    		while(1){
    			if(k<val[cur]){
    				cur = ch[cur][0];
    			}
    			else{
    				res+=sz[ch[cur][0]];
    				if(k==val[cur]){
    					splay(cur);
    					return res + 1;
    				}
    				res+=cnt[cur];
    				cur=ch[cur][1];
    			}
    		}
    	}
    	int kth(int k){
    		int cur=rt;
    		while(1){
    			if(ch[cur][0]&&k<=sz[ch[cur][0]]){
    				cur=ch[cur][0];
    			}
    			else{
    				k-=cnt[cur]+sz[ch[cur][0]];
    				if(k<=0){
    					splay(cur);
    					return val[cur];
    				}
    				cur = ch[cur][1];
    			}
    		}
    	}
    	int pre(){
    		int cur=ch[rt][0];
    		if(!cur)return cur;
    		while(ch[cur][1])cur=ch[cur][1];
    		splay(cur);
    		return cur;
    	}
    	int nxt(){
    		int cur=ch[rt][1];
    		if(!cur)return cur;
    		while(ch[cur][0])cur=ch[cur][0];
    		splay(cur);
    		return cur;
    	}
    	void del(int k){
    		rk(k);
    		if(cnt[rt]>1){
    			cnt[rt]--;
    			maintain(rt);
    			return;
    		}
    		if(!ch[rt][0]&&!ch[rt][1]){
    			clear(rt);
    			rt=0;
    			return;
    		}
    		if(!ch[rt][0]){
    			int cur=rt;
    			rt=ch[rt][1];
    			fa[rt]=0;
    			clear(cur);
    			return;
    		}
    		if(!ch[rt][1]){
    			int cur=rt;
    			rt=ch[rt][0];
    			fa[rt]=0;
    			clear(cur);
    			return;
    		}
    		int cur=rt;
    		int x=pre();
    		fa[ch[cur][1]]=x;
    		ch[x][1]=ch[cur][1];
    		clear(cur);
    		maintain(rt);
    	}
    }tree;
    int main() {
    	int n;
    	std::cin>>n;
    	for(int i=1;i<=n;i++){
    		int x;
    		std::cin>>x;
    		tree.ins(x);
    	}
    	std::cout<<tree.kth(n)<<" "<<tree.kth(1);
    	return 0;
    }
    
    • 0
      @ 2023-10-5 13:53:17
      #include<bits/stdc++.h>
      using namespace std;
      int a[1001]={};
      int main(){
      int n,max=-99999,min=10000;
      cin>>n;
      for(int i=0;i<n;i++){
      	cin>>a[i];
      	if(a[i]>max){
      		max=a[i];
      	}
      	if(a[i]<min){
      		min=a[i];
      	}
      }
      cout<<max<<" "<<min;
      	return 0;
      	}
      
      • 0
        @ 2023-3-19 9:43:29

        #include<bits/stdc++.h> using namespace std; int a[1001]={}; int main() { int n,max=-99999,min=10000; cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; if(a[i]>max) { max=a[i]; } if(a[i]<min) { min=a[i]; } } cout<<max<<" "<<min; return 0; }

        • 0
          @ 2022-11-5 11:15:18

          #include<bits/stdc++.h> using namespace std; int f[323]; int main(){ int n,m,k; cin>>n; for(int i=1;i<=n;i++) cin>>f[i]; m=f[1]; k=f[2]; for(int j=1;j<=n;j++){ if(f[j]>=m) m=f[j]; } for(int j=1;j<=n;j++) if(f[j]<=k) k=f[j]; cout<<m<<" "<<k; return 0; }

          • 0
            @ 2022-11-5 11:09:23

            #include<bits/stdc++.h> using namespace std; int f[323]; int main(){ int n,m,k; cin>>n; for(int i=1;i<=n;i++) cin>>f[i]; m=f[1]; k=f[2]; for(int j=1;j<=n;j++){ if(f[j]>=m) m=f[j]; } for(int j=1;j<=n;j++) if(f[j]<=k) k=f[j]; cout<<m<<" "<<k; return 0; }

            • -1
              @ 2022-11-5 13:36:15

              #include<bits/stdc++.h> using namespace std; int f[148]; int main(){ int n,m,k; cin>>n; for(int i=1;i<=n;i++) cin>>f[i]; m=f[1]; k=f[2]; for(int j=1;j<=n;j++){ if(f[j]>=m) m=f[j]; } for(int j=1;j<=n;j++) if(f[j]<=k) k=f[j]; cout<<m<<" "<<k; return 0; }

              • -1
                @ 2022-11-5 11:18:20

                #include<bits/stdc++.h> using namespace std; int a[10000]; int main(){ int n,max=0,k=40000; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) if(a[i]>max) max=a[i]; for(int i=1;i<=n;i++) if(a[i]<=k) k=a[i]; cout<<max<<" "<<k;

                return 0;}

                • -2
                  @ 2022-11-5 8:50:25
                  #include<bits/stdc++.h>
                  using namespace std;
                  int a[1001]={};
                  int main(){
                  int n,max=-99999,min=10000;
                  cin>>n;
                  for(int i=0;i<n;i++){
                  	cin>>a[i];
                  	if(a[i]>max){
                  		max=a[i];
                  	}
                  	if(a[i]<min){
                  		min=a[i];
                  	}
                  }
                  cout<<max<<" "<<min;
                  	return 0;
                  	}
                  
                  
                  • -2
                    @ 2022-11-5 8:45:56

                    #include<bits/stdc++.h> using namespace std; int a[1145]; int main(){

                    int m,max=0,max1;
                    cin>>m;
                    
                    for(int i=0;i<m;i++){
                    	cin>>a[i];
                    	if(max<a[i])
                    		max=a[i];
                    
                    	for(int k=0;k<m;k++){
                    		if(max1>a[i])
                    			max1=a[i];
                    	}
                    
                    }
                    
                    cout<<max<<" "<<max1;
                    

                    }

                    • -2
                      @ 2022-11-5 8:39:53

                      #include<bits/stdc++.h> using namespace std; int a[25]; int main(){ int n,max,min; cin>>n>>a[1]; max = a[1]; min = a[1]; for(int i=2;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=n;i++){ if(a[i]>max){ max = a[i]; } if(a[i]<min){ min = a[i]; } } cout<<max<<" "<<min<<endl; return 0; }

                      • 1

                      【入门】求n个数的最大值和最小值

                      信息

                      ID
                      152
                      时间
                      1000ms
                      内存
                      16MiB
                      难度
                      4
                      标签
                      递交数
                      191
                      已通过
                      88
                      上传者