제출 #1255523

#제출 시각아이디문제언어결과실행 시간메모리
1255523Aviansh3개의 봉우리 (IOI25_triples)C++20
18 / 100
2093 ms24352 KiB
#include "triples.h" #include <bits/stdc++.h> using namespace std; bool checkTriple(int i, int j, int k, vector<int>&arr){ if(!(i<j&&j<k)){ return 0; } int n = arr.size(); if(i<0||j<0||k<0||i>=n||j>=n||k>=n){ return 0; } vector<int>arr1 = {j-i,k-i,k-j}; vector<int>arr2 = {arr[i],arr[j],arr[k]}; sort(arr1.begin(),arr1.end()); sort(arr2.begin(),arr2.end()); if(arr1[0]==arr2[0]&&arr1[1]==arr2[1]&&arr1[2]==arr2[2]){ return 1; } return 0; } long long count_triples(vector<int> arr) { int n = arr.size(); set<array<int,3>>triples; map<int,vector<int>>mp; for(int i = 0;i<n;i++){ mp[arr[i]-i].push_back(i); } for(int i = 0;i<n;i++){ //case 1: int a = i; int b = arr[a]+a; int c = arr[b]+a; if(checkTriple(a,b,c,arr)){ triples.insert({a,b,c}); } //case 2: a=i; c=arr[a]+a; b=c-arr[c]; if(checkTriple(a,b,c,arr)){ triples.insert({a,b,c}); } //case 3: a=i; c=arr[a]+a; b=arr[c]+a; if(checkTriple(a,b,c,arr)){ triples.insert({a,b,c}); } //case 4: a=i; b=arr[a]+a; c=arr[b]+b; if(checkTriple(a,b,c,arr)){ triples.insert({a,b,c}); } //case 5: //later //case 6: b=i; a=b-arr[b]; c=arr[a]+b; if(checkTriple(a,b,c,arr)){ triples.insert({a,b,c}); } } for(pair<int,vector<int>>p:mp){ int siz = p.second.size(); for(int i = 0;i<siz;i++){ for(int j = i+1;j<siz;j++){ int a = p.second[i]; int b = p.second[j]; int c = arr[b]+a; if(checkTriple(a,b,c,arr)){ triples.insert({a,b,c}); } } } } return triples.size(); } 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...