Submission #315792

# Submission time Handle Problem Language Result Execution time Memory
315792 2020-10-24T01:39:45 Z daniel920712 Mouse (info1cup19_mouse) C++14
33.8046 / 100
2244 ms 129676 KB
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include "grader.h"

using namespace std;
vector < int > how;
bool have[500]={0};
bool have2[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,where,cc;
    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(jj=1;jj<=N;jj++)
    {
        j=xx[jj];
        if(!have[j])
        {
            how[0]=j;
            now=0;
            for(kk=1;kk<=N;kk++)
            {
                k=xx[kk];
                if(!have[k]&&k!=j)
                {
                    how[now+1]=k;
                    now++;
                }
            }
        }
        a=Query(how);
        if(a==N) return;
        ok=1;
        where=-1;
        for(k=1;k<N;k++)
        {
            swap(how[0],how[k]);
            b=Query(how);
            if(b==N) return;
            swap(how[0],how[k]);

            if(a>b)
            {
                where=k;
                continue;
            }
            else
            {
                ok=0;
                break;
            }
        }
        if(ok)
        {
            have[how[0]]=1;
            have2[0]=1;
            cc=0;
            break;
        }
        else if(where!=-1)
        {
            have[how[where]]=1;
            have2[where]=1;
            cc=where;
            break;
        }
    }
    //printf("%d %d\n",cc,how[cc]);
    for(i=0;i<N;i++)
    {
        if(i==cc) continue;
        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)
                    {
                        if(i+now+1==cc) now++;
                        if(i+now+1==N) continue;
                        how[i+now+1]=k;
                        now++;
                    }
                }
            }
            a=Query(how);
            if(a==N) return;

            swap(how[i],how[cc]);
            b=Query(how);
            if(b==N) return;
            swap(how[i],how[cc]);
            if(a-b==2)
            {
                have[how[i]]=1;
                break;
            }

        }
    }
}

Compilation message

mouse.cpp: In function 'void solve(int)':
mouse.cpp:20:13: warning: unused variable 'c' [-Wunused-variable]
   20 |     int a,b,c,now,i,j,jj,kk,k,ok,where,cc;
      |             ^
mouse.cpp:20:40: warning: 'cc' may be used uninitialized in this function [-Wmaybe-uninitialized]
   20 |     int a,b,c,now,i,j,jj,kk,k,ok,where,cc;
      |                                        ^~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 256 KB Correct! Number of queries: 25
2 Correct 0 ms 256 KB Correct! Number of queries: 4
3 Correct 1 ms 384 KB Correct! Number of queries: 10
4 Correct 1 ms 256 KB Correct! Number of queries: 22
5 Correct 1 ms 376 KB Correct! Number of queries: 21
6 Correct 1 ms 256 KB Correct! Number of queries: 22
# Verdict Execution time Memory Grader output
1 Correct 1 ms 256 KB Correct! Number of queries: 25
2 Correct 0 ms 256 KB Correct! Number of queries: 4
3 Correct 1 ms 384 KB Correct! Number of queries: 10
4 Correct 1 ms 256 KB Correct! Number of queries: 22
5 Correct 1 ms 376 KB Correct! Number of queries: 21
6 Correct 1 ms 256 KB Correct! Number of queries: 22
7 Correct 18 ms 752 KB Correct! Number of queries: 1400
8 Correct 24 ms 632 KB Correct! Number of queries: 1200
9 Correct 12 ms 504 KB Correct! Number of queries: 1000
10 Correct 24 ms 632 KB Correct! Number of queries: 1200
11 Correct 20 ms 504 KB Correct! Number of queries: 1100
12 Correct 26 ms 632 KB Correct! Number of queries: 1300
13 Correct 20 ms 632 KB Correct! Number of queries: 1200
14 Correct 25 ms 632 KB Correct! Number of queries: 1200
15 Correct 26 ms 760 KB Correct! Number of queries: 1300
16 Correct 22 ms 632 KB Correct! Number of queries: 1400
# Verdict Execution time Memory Grader output
1 Correct 1 ms 256 KB Correct! Number of queries: 25
2 Correct 0 ms 256 KB Correct! Number of queries: 4
3 Correct 1 ms 384 KB Correct! Number of queries: 10
4 Correct 1 ms 256 KB Correct! Number of queries: 22
5 Correct 1 ms 376 KB Correct! Number of queries: 21
6 Correct 1 ms 256 KB Correct! Number of queries: 22
7 Correct 18 ms 752 KB Correct! Number of queries: 1400
8 Correct 24 ms 632 KB Correct! Number of queries: 1200
9 Correct 12 ms 504 KB Correct! Number of queries: 1000
10 Correct 24 ms 632 KB Correct! Number of queries: 1200
11 Correct 20 ms 504 KB Correct! Number of queries: 1100
12 Correct 26 ms 632 KB Correct! Number of queries: 1300
13 Correct 20 ms 632 KB Correct! Number of queries: 1200
14 Correct 25 ms 632 KB Correct! Number of queries: 1200
15 Correct 26 ms 760 KB Correct! Number of queries: 1300
16 Correct 22 ms 632 KB Correct! Number of queries: 1400
17 Incorrect 2244 ms 129676 KB Too many queries
18 Halted 0 ms 0 KB -