Submission #1256772

#TimeUsernameProblemLanguageResultExecution timeMemory
1256772ma_moutahidTriple Peaks (IOI25_triples)C++20
0 / 100
2092 ms1864 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] && H[k]+H[j]==H[i] &&( H[k]==i-k || H[k]==k-j))result++;
        k=i-H[j];
        if(H[k]>H[j] && H[k]+H[j]==H[i] &&( H[k]==i-k || H[k]==k-j))result++;
        continue;
      }
      int k=i-H[i];
      if(H[k]>=H[j]  && 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[j]==H[i] && (i-j==H[j] || i-j== H[k]) )result++;
        
    
    }
  }
  return result;

}


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

  ll 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...