Submission #312529

# Submission time Handle Problem Language Result Execution time Memory
312529 2020-10-13T16:27:03 Z mohamedsobhi777 Mouse (info1cup19_mouse) C++14
39.3333 / 100
3000 ms 384 KB
#include "grader.h"
#include<bits/stdc++.h>
using namespace std ; 
int n, num ;
vector<int> per, ans ; 
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

vector<int> indi, goods ; 

void del(int x){
        goods.push_back(x) ; 
        for(int i = 0 ;i < (int) indi.size() ; ++ i){
                if(indi[i] == x){
                        indi.erase(indi.begin() + i , indi.begin() + i + 1) ; 
                        return ; 
                }
        }
}

void print(){
        for(int i = 0 ;i < n; ++ i)
                cout<< ans[i] <<" " ;
        cout<<".\n" ; 
}

void solve(int n){ 

        for(int i = 1;i <= n ; ++ i){
                ans.push_back(i) ; 
        }
        for(int i = 0 ;i < n; ++ i){
                indi.push_back(i) ; 
        }
        for(int i = 0 ;i < n; ++ i){
        //        int x ; cin >> x ;
        //        per.push_back(x) ; 
        }       

        random_shuffle(ans.begin() , ans.end() ) ; 
        int tim = 0 ; 
        int las = 0 ; 
        las = query(ans) ; 

        while(tim ++ < 1000000){
                int sz = (int) indi.size() ; 
                int x = rng() % sz ; 
                int y = rng() % sz ; 
                x = indi[x] ; 
                y = indi[y] ; 
                if(x == y)continue ; 
                swap(ans[x],ans[y]) ; 
                int now = query(ans) ; 
                if( abs(now - las) == 2){
                        del(x) ; del(y) ;  
                }else if(now == las + 1){
                        if(goods.size()){
                                int gud = goods.back() ; 
                                vector<int> qu = ans ;
                                swap(qu[gud],qu[x]) ; 
                                if(query(qu) == now - 2){
                                        del(x) ; 
                                }else{
                                        del(y) ; 
                                }
                        }
                }else if(now == las -1 ){
                        if(goods.size()){
                                int gud = goods.back() ; 
                                vector<int> qu = ans ;
                                swap(qu[x],qu[y]);
                                swap(qu[gud],qu[x]) ; 
                                if(query(qu) == las - 2){
                                        del(x) ; 
                                }else{
                                        del(y) ; 
                                }
                        }
                }

                if(now < las)swap(ans[x],ans[y]) ;
                las = max(las , now) ; 
                if(now == n)
                        break ;
        }
        return ; 
        if(las == n)
                cout<<"ok " ; 
        else {
                for(auto u : ans)cout<< u <<" " ; 
                        cout<<"incorrect " ; 
        }
        return ; 
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 256 KB Correct! Number of queries: 20
2 Correct 0 ms 256 KB Correct! Number of queries: 2
3 Correct 1 ms 384 KB Correct! Number of queries: 21
4 Correct 1 ms 256 KB Correct! Number of queries: 11
5 Correct 0 ms 288 KB Correct! Number of queries: 12
6 Correct 1 ms 256 KB Correct! Number of queries: 18
# Verdict Execution time Memory Grader output
1 Correct 1 ms 256 KB Correct! Number of queries: 20
2 Correct 0 ms 256 KB Correct! Number of queries: 2
3 Correct 1 ms 384 KB Correct! Number of queries: 21
4 Correct 1 ms 256 KB Correct! Number of queries: 11
5 Correct 0 ms 288 KB Correct! Number of queries: 12
6 Correct 1 ms 256 KB Correct! Number of queries: 18
7 Correct 9 ms 256 KB Correct! Number of queries: 700
8 Correct 14 ms 256 KB Correct! Number of queries: 900
9 Correct 9 ms 256 KB Correct! Number of queries: 600
10 Correct 12 ms 256 KB Correct! Number of queries: 700
11 Correct 6 ms 256 KB Correct! Number of queries: 500
12 Correct 12 ms 256 KB Correct! Number of queries: 900
13 Correct 10 ms 256 KB Correct! Number of queries: 700
14 Correct 12 ms 256 KB Correct! Number of queries: 700
15 Correct 10 ms 256 KB Correct! Number of queries: 600
16 Correct 10 ms 256 KB Correct! Number of queries: 700
# Verdict Execution time Memory Grader output
1 Correct 1 ms 256 KB Correct! Number of queries: 20
2 Correct 0 ms 256 KB Correct! Number of queries: 2
3 Correct 1 ms 384 KB Correct! Number of queries: 21
4 Correct 1 ms 256 KB Correct! Number of queries: 11
5 Correct 0 ms 288 KB Correct! Number of queries: 12
6 Correct 1 ms 256 KB Correct! Number of queries: 18
7 Correct 9 ms 256 KB Correct! Number of queries: 700
8 Correct 14 ms 256 KB Correct! Number of queries: 900
9 Correct 9 ms 256 KB Correct! Number of queries: 600
10 Correct 12 ms 256 KB Correct! Number of queries: 700
11 Correct 6 ms 256 KB Correct! Number of queries: 500
12 Correct 12 ms 256 KB Correct! Number of queries: 900
13 Correct 10 ms 256 KB Correct! Number of queries: 700
14 Correct 12 ms 256 KB Correct! Number of queries: 700
15 Correct 10 ms 256 KB Correct! Number of queries: 600
16 Correct 10 ms 256 KB Correct! Number of queries: 700
17 Execution timed out 3097 ms 384 KB Time limit exceeded
18 Halted 0 ms 0 KB -