# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
315499 | daniel920712 | Mouse (info1cup19_mouse) | C++14 | 243 ms | 19852 KiB |
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 <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include "grader.h"
using namespace std;
vector < int > how;
bool have[500]={0};
int xx[500];
map < vector < int > , int > all;
int Query(vector < int > tt)
{
if(all.find(tt)==all.end()) all[tt]=query(tt);
return all[tt];
}
void solve(int N)
{
int a,b,c,now,i,j,jj,kk,k,ok;
how.clear();
for(i=0;i<N;i++)
{
how.push_back(i+1);
have[i+1]=0;
xx[i+1]=i+1;
}
random_shuffle(xx+1,xx+N+1);
for(i=0;i<N;i++)
{
for(jj=1;jj<=N;jj++)
{
j=xx[jj];
if(!have[j])
{
how[i]=j;
now=0;
for(kk=1;kk<=N;kk++)
{
k=xx[kk];
if(!have[k]&&k!=j)
{
how[i+now+1]=k;
now++;
}
}
}
a=Query(how);
if(a==N) return;
if(i==0)
{
ok=1;
for(k=i+1;k<N;k++)
{
swap(how[i],how[k]);
b=Query(how);
if(b==N) return;
swap(how[i],how[k]);
if(a>b) continue;
else
{
ok=0;
break;
}
}
if(ok)
{
have[how[i]]=1;
break;
}
}
else
{
swap(how[i],how[0]);
b=Query(how);
if(b==N) return;
swap(how[i],how[0]);
if(a-b==2)
{
have[how[i]]=1;
break;
}
}
}
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |