Submission #1256748

#TimeUsernameProblemLanguageResultExecution timeMemory
1256748ma_moutahidTriple Peaks (IOI25_triples)C++20
0 / 100
2092 ms1860 KiB
#include "triples.h"
#include<bits/stdc++.h>

using ll=long long;

#define vi vector<int>

#define vl vector<ll>

using namespace std;



ll count(vi &H){
  int n=H.size();
  ll result=0;
  for(int i=0;i<n;i++){
    if(H[i]>i)continue;
    for(int j=i-H[i];j<i;j++){
      if(H[j]>=H[i])continue;
      
      if(H[i]== i-j){
        int k=j+H[j];
        if(H[k]<=H[j])continue;
        if(H[k]+H[j]!=H[i])continue;
        if(H[k]==i-k)result++;
        k=i-H[j];
        if(H[k]==k-j)result++;
        continue;
      }
      int k=i-H[i];
      if(H[k]>=H[j] && H[k]<= H[i] && H[k]+H[j]==H[i] && (i-j==H[j] || i-j== H[k]) )result++;
      k=j+H[i];
      if(k>=n)continue;
      if(H[k]>=H[j] && H[k]<= H[i] && H[k]+H[j]==H[i] && (i-j==H[j] || i-j== H[k]) )result++;
        
    
    }
  }
  return result;

}


long long count_triples(std::vector<int> H) {

  int result=count(H);
  reverse(H.begin(),H.end());
  result+=count(H);



  return result;
}

std::vector<int> construct_range(int M, int K) {
  return {1, 1, 1};
}
#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...