제출 #1255551

#제출 시각아이디문제언어결과실행 시간메모리
1255551Aviansh3개의 봉우리 (IOI25_triples)C++20
컴파일 에러
0 ms0 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; vector<int>mp[1e5+5]; int offset = 50000; for(int i = 0;i<n;i++){ mp[arr[i]-i+offset].push_back(i); } for(int i = 0;i<n;i++){ int a,b,c; //case 1: a = i; b = arr[a]+a; if(b>=0&&b<n) c = arr[b]+a; if(checkTriple(a,b,c,arr)){ triples.insert({a,b,c}); } //case 2: a=i; c=arr[a]+a; if(c>=0&&c<n) b=c-arr[c]; if(checkTriple(a,b,c,arr)){ triples.insert({a,b,c}); } //case 3: a=i; c=arr[a]+a; if(c>=0&&c<n) b=arr[c]+a; if(checkTriple(a,b,c,arr)){ triples.insert({a,b,c}); } //case 4: a=i; b=arr[a]+a; if(b>=0&&b<n) 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]; if(a>=0&&a<n) c=arr[a]+b; if(checkTriple(a,b,c,arr)){ triples.insert({a,b,c}); } } int ans = 0; for(int z = 0;z<1e5+5;z++){ pair<int,vector<int>>p={z,mp[z]}; 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(c-b==b-a) continue; if(checkTriple(a,b,c,arr)){ ans++; } } } } return triples.size()+ans; } vector<int> construct_range(int M, int K) { vector<int>arr(M); for(int i = 0;i<M;i++){ if(i%2){ arr[i]=1; } else{ arr[i]=2; } } return arr; }

컴파일 시 표준 에러 (stderr) 메시지

triples.cpp: In function 'long long int count_triples(std::vector<int>)':
triples.cpp:28:22: error: conversion from 'double' to 'long unsigned int' in a converted constant expression
   28 |     vector<int>mp[1e5+5];
      |                   ~~~^~
triples.cpp:28:22: error: could not convert '(1.0e+5 + (double)5)' from 'double' to 'long unsigned int'
   28 |     vector<int>mp[1e5+5];
      |                   ~~~^~
      |                      |
      |                      double
triples.cpp:28:22: error: size of array 'mp' has non-integral type 'double'