Submission #1338250

#TimeUsernameProblemLanguageResultExecution timeMemory
1338250spuikeTriple Peaks (IOI25_triples)C++20
27.65 / 100
2024 ms2512 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define ld long double
#define fi first
#define se second
long long count_triples(vector<int>a){
    ll ans=0, n=a.size(), ma=0, mi=n;
    bool bilo=0;
    for(int i=0;i<n;i++){
        ma=max(ma, (ll)a[i]);
        mi=min(mi, (ll)a[i]);
        if(i>0 && a[i]<a[i-1])bilo=1;
    }
    if(!bilo){
        for(int i=0; i<n; i++){
            if(i-a[i]>=0 && i-a[i]+a[i-a[i]] < i && i-a[i]+a[i-a[i]] > i-a[i]){
                if(i - (i-a[i]+a[i-a[i]]) == a[i-a[i]+a[i-a[i]]]) ans++;
            }
            if(i-a[i]>=0 && i-a[i-a[i]] > i-a[i] && i-a[i-a[i]] < i){
                if(i - a[i-a[i]] - a[i-a[i-a[i]]] == i-a[i]){
                    if (i-a[i-a[i]] != i-a[i]+a[i-a[i]]) ans++;
                }
            }
        }
        return ans;
    }
    for(int i=0;i<n-mi;i++){
        for(int k=i+2;k<n && k-i<=ma;k++){
            if(a[i]>k-i || a[k]>k-i || k-i<mi)continue;
            for(int j=i+1;j<k;j++){
                ll r1=j-i, r2=k-j, r3=k-i;
                ll r11=a[i], r12=a[j], r13=a[k];
                if(r11>r12)swap(r11, r12);
                if(r11>r13)swap(r11, r13);
                if(r12>r13)swap(r12, r13);
                if(r1>r2)swap(r1, r2);
                if(r1>r3)swap(r1, r3);
                if(r2>r3)swap(r2, r3);
                if(r1==r11 && r2==r12 && r3==r13)ans++;
            }
        }
    }
    return ans;
}
vector<int> construct_range(int m, int k){
    vector<int>a;
    if(m%2==1)m++;
    for(int i=1;i<=m/2;i++)a.push_back(i);
    for(int i=m/2-1;i>0;i--)a.push_back(i);
    return a;
};
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...