This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#include "insects.h"
//#pragma GCC optimize ("O3")
using namespace std;
#define el "\n"
#define se " "
#define ll long long
#define ld long double
#define ff first
#define ss second
#define pb push_back
const ll INF=1e18,ch=1e18;
ll a,b,c,d,n,COST,t,last,ab,ba,n1,n2,fl1,fl2,o1,o2,flag,flag1,flag2,g,m,m1,m2,i,j,lr,f,k,l,r,y,o,p,mx=-ch,mx1=-ch,mx2=-ch,q,q1,q2,q3,q4,mn=ch,mn1=ch,mn2=ch,f1,f2,f3,pos,ans,sum,sz=1,MOD=1e9+7,zero=0,a1,b1,c1,val,sum1,cur,res,ans1,res1,kk,kkk,cnt,cnt1,fl;
ll S[2005];
ll A[2005];
ll PR[2005];
//void move_inside(int i)
//void move_outside(int i)
//int press_button()
bool pr(ll m)
{
if (flag==1)
{
flag2=0;
for(i=0;i<n;i++)
{
if (PR[i]+q>m) flag2=1;
if (flag2==1) {PR[i]=0;A[i]=0;move_outside(i);}
}
}
flag=0;
ans=0;
for(i=0;i<n;i++)
{
if (S[i]==1) continue;
if (PR[i]==0)
{
move_inside(i);
p=press_button();
A[i]=1;
PR[i]=p;
}
else
{
p=PR[i];
}
if (p+q>m)
{
A[i]=0;
move_outside(i);
}
else
{
ans++;
}
}
if ((m-q)*d==ans) return 1;
return 0;
}
int min_cardinality(int N)
{
n=N;
d=0;
for(i=0;i<n;i++)
{
move_inside(i);
d++;S[i]=1;
p=press_button();
if (p>1)
{
move_outside(i);
d--;S[i]=0;
}
}
for(i=0;i<n;i++)
{
if (S[i]==1) move_outside(i);
}
o=1;l=2;r=n/d;q=1;
while(l<=r)
{
for(i=0;i<n;i++)
{
A[i]=0;
}
m=(l+r)/2;
if (pr(m)==1)
{
o=m;
l=m+1;
q=m;
for(i=0;i<n;i++)
{
if (A[i]==1)
{
S[i]=1;
move_outside(i);
}
}
}
else
{
r=m-1;flag=1;
}
}
return o;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |