제출 #1249913

#제출 시각아이디문제언어결과실행 시간메모리
1249913Jakub_Wozniak3개의 봉우리 (IOI25_triples)C++20
31.43 / 100
2095 ms2372 KiB
#include "triples.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef pair<vector <int> ,ll> pvl; #define st first #define nd second vector<int> construct_range(int M, int K) { vector <int> res(M,0); int s = M/2; res[s] = 1; int licz = 1; for(int i = s-1 ; i >= 0 ; i-=2) { res[i] = licz+1; if(i-1 >= 0)res[i-1] = licz; licz += 2; } licz = 1; for(int i = s+1 ; i < M ; i+=2) { res[i] = licz+1; if(i < M)res[i+1] = licz; licz += 2; } return res; } long long count_triples(vector<int> H) { int N = H.size(); int B = 0; for(int i = 0; i < N ; i++)B = max(B , H[i]); ll ile = 0; for(int i = 0 ; i < N ; i++) { for(int j = i+1 ; j < min(N,i+B+1) ; j++) { int d = j-i; if(H[i] == d || H[j] == d) { int R = 0; if(H[i] == d)R = H[j]; else R = H[i]; int k = j+R; if(k >= 0 && k < N && k > j && H[k] == R+d)ile++; k = i+R; if(k >= 0 && k < N && k > j && R == H[k]+d)ile++; } else { int k = j+min(H[i] , H[j]); if(k >= 0 && k < N && H[k] == d && min(H[i],H[j])+d == max(H[i],H[j]))ile++; } } } return ile; }
#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...