Submission #641851

#TimeUsernameProblemLanguageResultExecution timeMemory
641851knon0501Finding Routers (IOI20_routers)C++14
77 / 100
2 ms340 KiB
#include "routers.h"
#include <bits/stdc++.h>;
using namespace std;
const int B = 150;
int c[1005];
int b[200005];
int chk[1005];

std::vector<int> find_routers(int l, int n, int q)
{
    vector<int> ans = {0};
    // cout<<l<<" "<<n<<" "<<q<<endl;
    int j = 1;
    int prv = 0;
    for (int i = B; i <= l; i += B)
    {
        int x = use_detector(i);
        if(chk[x]==0)chk[x]=i;
        for (; j < x; j++)
        {
            int lef = prv + 1;
            int rig = i - 1;
            if(chk[j])rig=chk[j]-1;
            int k;
            while (rig >= lef)
            {
                int mid = lef + rig >> 1;
                int y = use_detector(mid);
                if (y < j)
                {
                    k = mid;
                    lef = mid + 1;
                }
                else
                {
                    rig = mid - 1;
                }
            }
            ans.push_back(2 * k - ans[j - 1]);
            prv = ans[j];
        }
    }
    for (; j < n; j++)
    {
        int lef = prv + 1;
        int rig = l;

        int k;
        while (rig >= lef)
        {
            int mid = lef + rig >> 1;
            int y = use_detector(mid);
            if (y < j)
            {
                k = mid;
                lef = mid + 1;
            }
            else
            {
                rig = mid - 1;
            }
        }
        ans.push_back(2 * k - ans[j - 1]);
        prv = ans[j];
    }
    return ans;
}

Compilation message (stderr)

routers.cpp:2:25: warning: extra tokens at end of #include directive
    2 | #include <bits/stdc++.h>;
      |                         ^
routers.cpp: In function 'std::vector<int> find_routers(int, int, int)':
routers.cpp:27:31: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   27 |                 int mid = lef + rig >> 1;
      |                           ~~~~^~~~~
routers.cpp:51:27: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   51 |             int mid = lef + rig >> 1;
      |                       ~~~~^~~~~
routers.cpp:63:25: warning: 'k' may be used uninitialized in this function [-Wmaybe-uninitialized]
   63 |         ans.push_back(2 * k - ans[j - 1]);
      |                       ~~^~~
routers.cpp:39:29: warning: 'k' may be used uninitialized in this function [-Wmaybe-uninitialized]
   39 |             ans.push_back(2 * k - ans[j - 1]);
      |                           ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...