Submission #1069381

# Submission time Handle Problem Language Result Execution time Memory
1069381 2024-08-21T20:50:20 Z BigBadBully COVID tests (CEOI24_covid) C++17
0 / 100
7000 ms 412 KB
// Online C++ compiler to run C++ program online
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ff first
#define ss second
int n,t;
bool guess(int l,int r){
    cout << "Q ";
    for (int i = 0; i < n; i++)
    {
        if (i >= l && i <= r)
            cout << '1';
        else
            cout << '0';
    }
    cout << endl;
  
    char la;
    cin >> la;
    if (la == 'P')
    return 1;
    else
    return 0;
}
void calc(vector<bool>& mask, int l, int r)
{
    if (l==r)
    {
        mask[l] = 1;
        return;
    }
    int mid = l+r>>1;
    if (guess(l,mid))
        calc(mask,l,mid);
    if (guess(mid+1,r))
        calc(mask,mid+1,r);
}
void linear(vector<bool>&mask,int mile)
{
    int prev = 0;
    while(prev<n)
    {
        if (guess(prev,min(n,prev+mile)))
            for (int i = prev;i < min(n,prev+mile); i++)
                if (guess(i,i))
                    mask[i] = 1;
        prev = min(n,prev+mile);
    }
    
    
}
signed main() {
    double p;
    
    cin >> n >> p >> t;
    double tte = 1/p;
    int mile = (int)tte;
    
    while(t--)
    {
        
        int prev = 0;
        vector<bool> mask(n,0);
        if (mile < 100) 
        {
            calc(mask,0,n-1);
        }
        else if (mile < 10)
        {
            linear(mask,mile);
        }
        while(prev < n)
        {
            int l = prev, r = min(n-1,prev+max(4ll,mile));
            if (!guess(l,r))
            {
                prev = r+1;
                continue;
            }
            while (r-l>1)
            {
                int mid = l+r>>1;
                if (guess(prev,mid))
                    r = mid;
                else
                    l = mid;
            }
            if (guess(l,l))
            {
                mask[l] = 1;
                prev = r;
            }
            else
            {
                mask[r] = 1;
                prev = r+1;
            }
        }
        cout << "A ";
        for (int i = 0; i < n; i++)
            cout << (char)(mask[i]+'0');
        cout << endl;
        char c;
        cin >> c;
        if (c=='C')
            continue;
        else
            break;
    }
}

Compilation message

Main.cpp: In function 'void calc(std::vector<bool>&, long long int, long long int)':
Main.cpp:33:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   33 |     int mid = l+r>>1;
      |               ~^~
Main.cpp: In function 'int main()':
Main.cpp:83:28: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   83 |                 int mid = l+r>>1;
      |                           ~^~
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 7015 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 108 ms 344 KB Output is correct (P=0.001, F=15.1, Q=11.6) -> 90.00 points
2 Correct 422 ms 412 KB Output is correct (P=0.005256, F=51.1, Q=52.3) -> 82.27 points
3 Correct 2040 ms 344 KB Output is correct (P=0.011546, F=94.9, Q=252.6) -> 11.77 points
4 Correct 4291 ms 344 KB Output is correct (P=0.028545, F=191.5, Q=520.8) -> 11.42 points
5 Execution timed out 7057 ms 344 KB Time limit exceeded
6 Halted 0 ms 0 KB -