Submission #413922

#TimeUsernameProblemLanguageResultExecution timeMemory
413922cfalas버섯 세기 (IOI20_mushrooms)C++14
25 / 100
156 ms292 KiB
#include "mushrooms.h" #include<bits/stdc++.h> using namespace std; #define mp make_pair #define INF 10000000 #define MOD 1000000007 #define MID ((l+r)/2) #define HASHMOD 2305843009213693951 #define ll long long #define ull unsigned long long #define F first #define S second typedef pair<ll, ll> ii; typedef pair<ii, int> iii; typedef vector<int> vi; typedef vector<ii> vii; typedef map<int, int> mii; #define EPS 1e-6 #define FOR(i,n) for(int i=0;i<((int)(n));i++) #define FORi(i,a,b) for(int i=((int)(a));i<((int)(b));i++) #define FOA(v, a) for(auto v : a) int count_mushrooms(int n) { int ans=1; int x = use_machine({0,1}); if(!x){ ans++; // both are A FORi(i,2,n){ if(i+1<n){ int a = use_machine({0, i, 1, i+1}); if(a==0) ans+=2; else if(a==1 || a==2) ans++; i++; } else{ ans+= 1 - use_machine({0,i}); } } } else{ if(n==2) return 1; // 0 is A, 1 is B // query 2, if A then use 0, i, 2, i+1 // if B then use 1, i, 2, i+1 int x2 = use_machine({0,2}); int fpos=0; if(!x2) ans++, fpos=0; // 2 is a, use 0 else fpos=1; FORi(i,3,n){ if(i+1<n){ int a = use_machine({fpos, i, 2, i+1}); if((a==0 && fpos==0) || (a==3 && fpos==1)) ans+=2; else if(a==1 || a==2) ans++; i++; } else{ ans+= 1 - use_machine({0,i}); } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...