Educational Codeforces Round 69 (Rated for Div. 2)
Educational Codeforces Round 69 (Rated for Div. 2)
A
# include <bits/stdc++.h>
using namespace std;
const int MAXN=1e5+100;
int a[MAXN];
int cmp(int a,int b)
{
    return a>b;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--){
        int n;
        int k=0;
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        sort(a+1,a+n+1,cmp);
        int aa=a[1],bb=a[2];
        //cout<<"@@"<<aa<<" "<<bb<<endl;
        int shortt=min(aa,bb)-1;
        //cout<<"###"<shortt<<endl;
        for(int i=3;i<=n;i++){
            if(a[i]>=1){
                k++;
            }
        }
        k=min(shortt,k);
        cout<<k<<endl;
    } 
    
    return 0;
 } 
B
# include <bits/stdc++.h>
using namespace std;
const int MAXN=2e5+100;
int a[MAXN];
int main()
{
    int n;
    int flag=1;
    scanf("%d",&n);
    int maxx=0,maxi=1;
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        if(a[i]>maxx){
            maxx=a[i];
            maxi=i;
        }
    }
    int aa=a[maxi];
    for(int i=maxi+1;i<=n;i++){
        if(aa>a[i]){
            aa=a[i];
        }else{
            flag=0;
            break;
        }
    }
    int bb=a[maxi];
    for(int i=maxi-1;i>=1;i--){
        if(bb>a[i]){
            bb=a[i];
        }else{
            flag=0;
            break;
        }
    }
    if(flag){
        printf("YES");
    }else{
        printf("NO");
    }
    
    return 0;
}
C
# include <bits/stdc++.h>
using namespace std;
const int MAXN=3e5+100;
int a[MAXN];
pair<int,int> p[MAXN];
int main()
{
    int n,k;
    int ans=0;
    scanf("%d %d",&n,&k);
    
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    
    if(k==n){
        printf("0");
    }else if(k==1){
        ans=a[n]-a[1];
        printf("%d",ans);
    }else{
        ans=a[n]-a[1];
        for(int i=1;i<n;i++){
            p[i].first=a[i]-a[i+1];
            p[i].second=i;
        }
        sort(p+1,p+n+1);
        for(int i=1;i<k;i++){
            ans+=p[i].first;
        }
        printf("%d",ans);
    }
    
    return 0;
}
D
# include <bits/stdc++.h>
using namespace std;
const int MAXN=3e5+100;
typedef long long LL;
int a[MAXN]; 
int b[MAXN];
int dp[MAXN][20];
int main()
{
    int n,m,k;
    scanf("%d %d %d",&n,&m,&k);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        b[i]=b[i-1]+a[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=i&&j<=m;j++){
            if(i<=m){
                dp[i][j]=max(0,b[i]-b[i-j]-k);
            }else{
                dp[i][j]=max(max(0,b[i]-b[i-j]-k),b[i]-b[i-m]-k+dp[i-m][j]);
            }   
        }
    }
    int maxx=0;
    for(int i=1;i<=m;i++){
        maxx=max(maxx,dp[n][i]);
    }
    cout<<maxx<<endl;
    return 0;
}
    向wjmzbmr学习,acm本就是逆天而行。
                    
                
                
            
        
浙公网安备 33010602011771号