Submission #1186562

#TimeUsernameProblemLanguageResultExecution timeMemory
1186562callmehuseynPilot (NOI19_pilot)C++20
40 / 100
1095 ms1864 KiB
#include <bits/stdc++.h>
#define int long long
#define ll long long
#define endl "\n"
#define pb push_back
#define fastio                        \
    ios_base::sync_with_stdio(false); \
    cin.tie(0);                       \
    cout.tie(0);
// const int INF = 1e18;
// const int MAX_SIZE = 5e5 + 5;
#define all(x) x.begin(), x.end()
#define allre(x) x.rbegin(), x.rend()
#define vi vector<int>
#define EPS 1e-10
#define vii vector<pair<int, int>>
// #define fr(s, n) for (int i = s; i < n; i++)
#define frj(s, n) for (int j = s; j < n; j++)
#define F first
#define S second
using namespace std;
typedef vector<vi> vvi;
typedef vector<vvi> vvvi;
typedef vector<vvvi> vvvvi;
typedef pair<int, int> ii;
typedef vector<vii> vvii;
typedef vector<vvii> vvvii;
int zero(int n)
{
    int ret = 0;
    while (n > 0)
    {
        n /= 5;
        ret += n;
    }

    return ret;
}
bool comp(pair<pair<int, int>, int> &a, pair<pair<int, int>, int> &b)
{
    if (a.F.S == b.F.S)
        return a.F.F > b.F.F;
    return a.F.S < b.F.S;
}
int gcd(int x, int y)
{
    return y == 0 ? x : gcd(y, x % y);
}
int lcm(int a, int b)
{
    return (a / gcd(a, b)) * b;
}
bool isprime(int n)
{
    if (n < 2)
    {
        return 0;
    }
    for (int i = 2; i * i <= n; i++)
    {
        if (n % i == 0)
        {
            return 0;
        }
    }
    return 1;
}
void sieve(int m, int n)
{
    vector<bool> pr(n + 1, true);
    pr[0] = pr[1] = 0;
    for (int i = 2; i * i <= n; i++)
    {
        if (pr[i])
        {
            for (int j = i * i; j <= n; j += i)
            {
                pr[j] = 0;
            }
        }
    }

    bool t = false;
    int cnt = 0;
    for (int i = m; i <= n; i++)
    {
        if (pr[i])
        {
            cnt++;
            if (cnt % 100 == 1)
            {
                cout << i << endl;
            }
        }
    }
}
int mod = 1e9 + 7;
int pw(int a, int b, int mod)
{
    int res = 1;
    while (b > 0)
    {
        if (b % 2 == 1)
        {
            res = (res * a) % mod;
        }
        a = (a * a) % mod;
        b /= 2;
    }
    return res;
}
/*const int sz=105;
int a[sz][sz];
vi g[sz];
bool used[sz],cy=0,color[sz];
int cnt=0;
void dfs(int node){
    used[node]=true;
    color[node]=true;
    for(int i:g[node]){
     if(!used[i]){
        dfs(i);
     }
     if(color[i]){
    cy=1;
        return;
     }

    }
    color[node]=false;
}
const int M = 998244353, N = 500000;
vector<int> f(N+1), ivf(N+1);
int p(int b, int e) {
    long long r = 1;
    while (e) {
        if (e & 1) r = (r * b) % M;
        b = (b * b) % M;
        e >>= 1;
    }
    return (int)r;
}
bool frr(int n){
int x=sqrt(n);
if(x*x==n)return 1;
return 0;
}*/
/*bool vis[1005][1005];
intc g[1005][1005],n,m;
int dfs(int i,int j){
vis[i][j]=1;
int ans=g[i][j];
if( i!=0 && g[i-1][j] != 0 && !vis[i-1][j]){
    ans+=dfs(i-1,j);
}
if( i!=n-1 && g[i+1][j] != 0 && !vis[i+1][j]){
    ans+=dfs(i+1,j);
}
if( j!=0 && g[i][j-1] != 0 && !vis[i][j-1]){
    ans+=dfs(i,j-1);
}
if( j!=m-1 && g[i][j+1] != 0 && !vis[i][j+1]){
    ans+=dfs(i,j+1);
}
return ans;
}*/
/*const int MX=105;
int par[MX][MX];
int sz[MX] ;

int getRep(int a,int x){
if(par[a][x]!=x){
    par[a][x] = getRep(a, par[a][x]);
}
return par[a][x];
}

bool unite(int c ,int a,int b){
a=getRep(c,a);
b=getRep(c,b);
if(a==b){return false;}
if(sz[a]>sz[b])swap(a,b);
if(a!=b){
par[c][a]=b;
}
}
const int  N=200005;
int a[N],t[N*4];
void build(int node,int l,int r){
    if(l==r){
        t[node]=a[l];
        return;
    }
    int mid=(l+r)/2;
    build(node*2,l,mid);
    build(node*2+1,mid+1,r);
    t[node]=min(t[node*2],t[node*2+1]);
}
int get (int node,int l,int r,int ql,int qr){
    if(qr<l || r<ql){
return 1e9;
    }
    if(ql<= l && r<=qr){
return t[node];
    }
    int mid=(l+r)/2;
    int res1=get(node*2,l,mid,ql,qr);
    int res2=get(node*2+1,mid+1,r,ql,qr);
    return min(res1,res2);
}
void update(int node,int l,int r,int pos,int val){
    if(l==r){
        t[node]=val;
        return;
    }
    int mid=(l+r)/2;
    if(pos<=mid){
        update(node*2,l,mid,pos ,val);
    }
    else{
        update(node*2+1,mid+1,r,pos ,val);
    }
    t[node]=min(t[node*2],t[node*2+1]);
}*/
int merge(vi &v, int low, int mid, int h)
{
    vi temp;
    int l = low;
    int r = mid + 1;
    int cnt = 0;
    while (l <= mid && r <= h)
    {
        if (v[l] <= v[r])
        {
            temp.pb(v[l]);
            l++;
        }
        else
        {
            temp.pb(v[r]);
            cnt += (mid - l + 1);
            r++;
        }
    }
    while (l <= mid)
    {
        temp.pb(v[l]);
        l++;
    }
    while (r <= h)
    {
        temp.pb(v[r]);
        r++;
    }
    for (int i = low; i <= h; i++)
    {
        v[i] = temp[i - low];
    }
    return cnt;
}
int mergeSort(vi &v, int low, int high)
{
    int cnt = 0;
    if (low >= high)
        return cnt;
    int mid = (low + high) / 2;
    cnt += mergeSort(v, low, mid);
    cnt += mergeSort(v, mid + 1, high);
    cnt += merge(v, low, mid, high);
    return cnt;
}
void guliyev()
{
    int n, m;
    cin >> n >> m;
    vi v(n);
    vi v2(m);
    for (int i = 0; i < n; ++i)
    {
        cin >> v[i];
    }
    for (int i = 0; i < m; ++i)
    {
        cin >> v2[i];
    }
    for (int i = 0; i < m; ++i)
    {
        int mx = v2[i];
        int cnt = 0;
        for (int s = 0; s < n; ++s)
        {
            int ans = 0;
            for (int e = s; e < n; ++e)
            {
                ans = max(ans, v[e]);
                if (ans <= mx)
                {
                    cnt++;
                }
                else
                {
                    break;
                }
            }
        }

        cout << cnt << '\n';
    }
}
signed main()
{
    fastio;
    int u = 1;
    // cin >> u;
    while (u--)
    {
        guliyev();
        // cout<<endl;
    }
    return 0;
}
// By Husu
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...