답안 #309449

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
309449 2020-10-03T14:01:33 Z lucaperju 버섯 세기 (IOI20_mushrooms) C++14
89.6825 / 100
10 ms 512 KB
#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> ta,tb,ord;
vector<int>vc;
int v[20003];
int count_mushrooms(int n) {
	std::vector<int> m;
	/**
	for (int i = 0; i < n; i++)
		m.push_back(i);
	int c1 = use_machine(m);
	m = {0, 1};
	int c2 = use_machine(m);
	return c1+c2;
	*/
	int i,j;
    for(i=1;i<n;++i)
        ord.push_back(i);
    srand(time(NULL));
    random_shuffle(ord.begin(),ord.end());
    ta.push_back(0);
    i=0;
    while(i<ord.size() && ta.size()<2 && tb.size()<2)
    {
        m.clear();
        m.push_back(0);
        m.push_back(ord[i]);
        int a = use_machine(m);
        if(a==0)
            ta.push_back(ord[i]);
        else
            tb.push_back(ord[i]);
        ++i;
    }
    int type=1;
    if(ta.size()<2)
        type=2;
    if(ta.size()>=2)
    {
        vc.push_back(ta[0]);
        vc.push_back(ta[1]);
    }
    else
    {
        vc.push_back(tb[0]);
        vc.push_back(tb[1]);
    }
    int cnta=0;
    int cntc=100;
    while(cntc--)
    {
        if(i+1<ord.size())
        {
            m.clear();
            m.push_back(vc[0]);
            m.push_back(ord[i]);
            m.push_back(vc[1]);
            m.push_back(ord[i+1]);
            int a=use_machine(m);
            if(type==1)
            {
                if(a&2)
                    tb.push_back(ord[i]);
                else
                    ta.push_back(ord[i]);
                if(a&1)
                    tb.push_back(ord[i+1]);
                else
                    ta.push_back(ord[i+1]);
            }
            else
            {
                if(a&2)
                    ta.push_back(ord[i]);
                else
                    tb.push_back(ord[i]);
                if(a&1)
                    ta.push_back(ord[i+1]);
                else
                    tb.push_back(ord[i+1]);
            }
            i+=2;
        }
        else if(i<ord.size())
        {
            m.clear();
            m.push_back(0);
            m.push_back(ord[i]);
            int a = use_machine(m);
            if(a==0)
                ta.push_back(ord[i]);
            else
                tb.push_back(ord[i]);
            ++i;
        }
        else
            break;
    }
    if(ta.size()>tb.size())
        type=1;
    else
        type=2;
    vc.clear();
    if(type==1)
        for(j=0;j<ta.size();++j)
            vc.push_back(ta[j]);
    else
        for(j=0;j<tb.size();++j)
            vc.push_back(tb[j]);
    cnta=ta.size();
    while(i<ord.size())
    {
        m.clear();
        int catc=0;
        int last;
        for(j=0;j<vc.size() && i<ord.size();++j,++i)
        {
            m.push_back(vc[j]);
            m.push_back(ord[i]);
            ++catc;
            last=ord[i];
        }
        int a=use_machine(m);
        int ok=(a&1);
        a=((a+1)>>1);
        if(ok==0)
            vc.push_back(last);
        if(type==2)
            cnta+=a;
        else
            cnta+=catc-a;
    }
    return cnta;
}

Compilation message

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:24:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |     while(i<ord.size() && ta.size()<2 && tb.size()<2)
      |           ~^~~~~~~~~~~
mushrooms.cpp:53:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |         if(i+1<ord.size())
      |            ~~~^~~~~~~~~~~
mushrooms.cpp:85:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   85 |         else if(i<ord.size())
      |                 ~^~~~~~~~~~~
mushrooms.cpp:106:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  106 |         for(j=0;j<ta.size();++j)
      |                 ~^~~~~~~~~~
mushrooms.cpp:109:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  109 |         for(j=0;j<tb.size();++j)
      |                 ~^~~~~~~~~~
mushrooms.cpp:112:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  112 |     while(i<ord.size())
      |           ~^~~~~~~~~~~
mushrooms.cpp:117:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  117 |         for(j=0;j<vc.size() && i<ord.size();++j,++i)
      |                 ~^~~~~~~~~~
mushrooms.cpp:117:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  117 |         for(j=0;j<vc.size() && i<ord.size();++j,++i)
      |                                ~^~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 1 ms 256 KB Output is correct
4 Correct 1 ms 256 KB Output is correct
5 Correct 2 ms 384 KB Output is correct
6 Correct 2 ms 384 KB Output is correct
7 Correct 7 ms 512 KB Output is correct
8 Correct 7 ms 512 KB Output is correct
9 Correct 7 ms 512 KB Output is correct
10 Correct 8 ms 512 KB Output is correct
11 Partially correct 8 ms 512 KB Output is partially correct
12 Correct 7 ms 512 KB Output is correct
13 Correct 7 ms 512 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Partially correct 8 ms 512 KB Output is partially correct
16 Partially correct 10 ms 512 KB Output is partially correct
17 Correct 5 ms 384 KB Output is correct
18 Correct 7 ms 512 KB Output is correct
19 Partially correct 8 ms 512 KB Output is partially correct
20 Correct 7 ms 512 KB Output is correct
21 Correct 7 ms 512 KB Output is correct
22 Partially correct 8 ms 512 KB Output is partially correct
23 Correct 7 ms 512 KB Output is correct
24 Correct 6 ms 384 KB Output is correct
25 Partially correct 8 ms 512 KB Output is partially correct
26 Partially correct 8 ms 512 KB Output is partially correct
27 Partially correct 8 ms 512 KB Output is partially correct
28 Partially correct 10 ms 512 KB Output is partially correct
29 Partially correct 7 ms 512 KB Output is partially correct
30 Partially correct 8 ms 512 KB Output is partially correct
31 Partially correct 10 ms 512 KB Output is partially correct
32 Partially correct 8 ms 512 KB Output is partially correct
33 Partially correct 9 ms 512 KB Output is partially correct
34 Partially correct 8 ms 512 KB Output is partially correct
35 Partially correct 10 ms 512 KB Output is partially correct
36 Partially correct 7 ms 512 KB Output is partially correct
37 Partially correct 8 ms 512 KB Output is partially correct
38 Partially correct 8 ms 512 KB Output is partially correct
39 Partially correct 6 ms 512 KB Output is partially correct
40 Partially correct 8 ms 512 KB Output is partially correct
41 Partially correct 8 ms 512 KB Output is partially correct
42 Partially correct 8 ms 512 KB Output is partially correct
43 Partially correct 8 ms 512 KB Output is partially correct
44 Partially correct 8 ms 512 KB Output is partially correct
45 Partially correct 8 ms 512 KB Output is partially correct
46 Partially correct 10 ms 512 KB Output is partially correct
47 Partially correct 8 ms 512 KB Output is partially correct
48 Partially correct 8 ms 512 KB Output is partially correct
49 Partially correct 9 ms 512 KB Output is partially correct
50 Partially correct 10 ms 512 KB Output is partially correct
51 Partially correct 8 ms 512 KB Output is partially correct
52 Partially correct 8 ms 512 KB Output is partially correct
53 Partially correct 9 ms 512 KB Output is partially correct
54 Partially correct 8 ms 512 KB Output is partially correct
55 Partially correct 8 ms 512 KB Output is partially correct
56 Partially correct 7 ms 512 KB Output is partially correct
57 Partially correct 7 ms 512 KB Output is partially correct
58 Partially correct 8 ms 512 KB Output is partially correct
59 Partially correct 8 ms 512 KB Output is partially correct
60 Partially correct 8 ms 512 KB Output is partially correct
61 Partially correct 7 ms 512 KB Output is partially correct
62 Correct 0 ms 256 KB Output is correct
63 Correct 0 ms 256 KB Output is correct
64 Correct 0 ms 256 KB Output is correct
65 Correct 0 ms 256 KB Output is correct
66 Correct 0 ms 256 KB Output is correct
67 Correct 0 ms 384 KB Output is correct
68 Correct 0 ms 384 KB Output is correct
69 Correct 0 ms 256 KB Output is correct
70 Correct 1 ms 256 KB Output is correct
71 Correct 0 ms 256 KB Output is correct
72 Correct 0 ms 256 KB Output is correct
73 Correct 1 ms 256 KB Output is correct
74 Correct 1 ms 384 KB Output is correct
75 Correct 1 ms 256 KB Output is correct
76 Correct 0 ms 384 KB Output is correct
77 Correct 0 ms 256 KB Output is correct
78 Correct 0 ms 256 KB Output is correct
79 Correct 0 ms 256 KB Output is correct
80 Correct 0 ms 384 KB Output is correct
81 Correct 1 ms 256 KB Output is correct
82 Correct 1 ms 256 KB Output is correct
83 Correct 0 ms 256 KB Output is correct
84 Correct 0 ms 384 KB Output is correct
85 Correct 1 ms 256 KB Output is correct
86 Correct 1 ms 384 KB Output is correct
87 Correct 0 ms 256 KB Output is correct
88 Correct 1 ms 256 KB Output is correct
89 Correct 1 ms 256 KB Output is correct
90 Correct 1 ms 384 KB Output is correct
91 Correct 1 ms 256 KB Output is correct