답안 #1064442

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1064442 2024-08-18T12:51:15 Z new_acc 버섯 세기 (IOI20_mushrooms) C++14
컴파일 오류
0 ms 0 KB
#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
int count_mushrooms(int n){
	int c1 = use_machine({0,1});
    if(n==2) return 2-c1;
	int c2 = use_machine({0,2});
    if(n==3) return 3-c1-c2;
    vi x[2];
    x[0].push_back(0);
    if(c1) x[1].push_back(1);
    else x[0].push_back(1);
    if(c2) x[1].push_back(2);
    else x[0].push_back(2);
    int g=3;
    bool ok=1;
    int a=0,b=0;
    if(!c1) a=0,b=1;
    else{
        if(!c2) a=0,b=2;
        else ok^=1,a=1,b=2;
    }
    for(int i=3;i<n-1;i+=2){
        if(x[0].size()>=50 and x[1].size()>=50 and 
                abs(x[1].size()-x[0].size())<10) break;
        if(x[0].size()>=85 or x[1].size()>=85) break;
        int c3=use_machine({i,a,i+1,b});      
        if((c3&1)) x[ok].push_back(i);
        else x[ok^1].push_back(i);
        if((c3&2)) x[ok].push_back(i+1);
        else x[ok^1].push_back(i+1);
        g=i+2;
    }
    int res=x[0].size();
    for(int i=g;i<n;){
        vi pom=x[0];
        bool odw=0;
        if(x[1].size()>x[0].size()){
            odw=1;
            pom=x[1];
        }
        vi pom2;
        int i2;
        for(i2=0;i2+i<n and i2<(int)pom.size();i2++){
            pom2.push_back(pom[i2]);
            pom2.push_back(i+i2);
        }
        i+=i2; 
        int c3=use_machine(pom2);
        if(!odw) c3=pom2.size()-1-c3;
        if(c3%2==1) x[0].push_back(i-1);
        else x[1].push_back(i-1);
        res+=(c3+1)/2;
    }
	return res;
}

Compilation message

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:26:44: error: call of overloaded 'abs(std::vector<int>::size_type)' is ambiguous
   26 |                 abs(x[1].size()-x[0].size())<10) break;
      |                                            ^
In file included from /usr/include/c++/10/bits/std_abs.h:38,
                 from /usr/include/c++/10/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from mushrooms.cpp:2:
/usr/include/stdlib.h:840:12: note: candidate: 'int abs(int)'
  840 | extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur;
      |            ^~~
In file included from /usr/include/c++/10/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from mushrooms.cpp:2:
/usr/include/c++/10/bits/std_abs.h:79:3: note: candidate: 'constexpr long double std::abs(long double)'
   79 |   abs(long double __x)
      |   ^~~
/usr/include/c++/10/bits/std_abs.h:75:3: note: candidate: 'constexpr float std::abs(float)'
   75 |   abs(float __x)
      |   ^~~
/usr/include/c++/10/bits/std_abs.h:71:3: note: candidate: 'constexpr double std::abs(double)'
   71 |   abs(double __x)
      |   ^~~
/usr/include/c++/10/bits/std_abs.h:61:3: note: candidate: 'long long int std::abs(long long int)'
   61 |   abs(long long __x) { return __builtin_llabs (__x); }
      |   ^~~
/usr/include/c++/10/bits/std_abs.h:56:3: note: candidate: 'long int std::abs(long int)'
   56 |   abs(long __i) { return __builtin_labs(__i); }
      |   ^~~