Submission #999726

# Submission time Handle Problem Language Result Execution time Memory
999726 2024-06-16T05:56:11 Z modwwe Fish 3 (JOI24_fish3) C++17
20 / 100
494 ms 169060 KB
///https://www.instagram.com/_modwwe/
#include<bits/stdc++.h>
#define int long long
//#define ll long long
#define down cout<<'\n';
#define NHP     ios_base::sync_with_stdio(0);cout.tie(0);cin.tie(0);
#define modwwe  int t;cin>>t; while(t--)
#define bit(i,j) (i>>j&1)
#define sobit(a) __builtin_popcountll(a)
#define task "test"
#define fin(x) freopen(x".inp","r",stdin)
#define fou(x) freopen(x".ans","w",stdout)
#define pb push_back
#define checktime   cerr << (double)clock() / CLOCKS_PER_SEC * 1000  << " ms";
using namespace std;
void phongbeo();
const int mod2=1e9+7;
const int  mod1=998244353;
struct icd
{
    int a,b;
};
struct ib
{
    int a;
    int b;
};
struct ic
{
    int a,b,c;
};
struct id
{
    int a,b,c,d;
};
struct ie
{
    int a,b,c, d,e,f;

};
int n,m,s1,s2,s4,s3,sf,k,r,mid,s5,s6,mx,s7,s8,s9,mx2,res,dem2=0,dem=0,l;
int  i,s10,s12;
int el=29;
main()
{
#ifndef ONLINE_JUDGE
    //fin(task),fou(task);
#endif
    NHP
    /// cin>>s1;
    // modwwe
    phongbeo(),down

}
struct IT
{int t[1200000];
    void upd(int node,int l,int r,int l1,int r1,int x)
     {
         if(l>r1||r<l1) return ;
         if(l>=l1&&r<=r1){t[node]+=x; return;}
         int mid=l+r>>1;
          upd(node<<1,l,mid,l1,r1,x);
          upd(node<<1|1,mid+1,r,l1,r1,x);
           t[node]=t[node<<1]+t[node<<1|1];
     }
     int get(int node,int l,int r,int l1,int r1)
      {
          if(l>r1||r<l1) return 0;
          if(l>=l1&&r<=r1) return t[node];
          int mid=l+r>>1;
           return get(node<<1,l,mid,l1,r1)+get(node<<1|1,mid+1,r,l1,r1);
      }
}st1,st2;
ib st[19][300001];
vector<ic> v[300002];
int a[300001];
int b[300001];
int c[300001];
int ans[300001];
vector<ib> v2[300001];
int get(int l,int r)
{
    int k=log2(r-l+1);
    return min(st[k][l].a,st[k][r-(1<<k)+1].a);
}
int get2(int l,int r)
{
     int k=log2(r-l+1);
      if(st[k][r-(1<<k)+1].a<=st[k][l].a) return st[k][r-(1<<k)+1].b;
      return st[k][l].b;
}
void solve()
{
    for(int i=1; i<=n; i++)
    {
        l=1;
        r=i;
        while(l<=r)
        {
            int mid=l+r>>1;
            if(get(mid,i)==a[i]) r=mid-1;
            else l=mid+1;
        }
        s2=(a[i]-a[r])*r;
        s3=a[i]-a[r];
        v[i].pb({i,s2,s3});
        l=i+1;
        r=n;
        while(l<=r)
        {
            int mid=l+r>>1;
            if(a[i]<get(i+1,mid))l=mid+1;
            else r=mid-1;
        }
        v[l].pb({i,-s2,-s3});
    }
}
void phongbeo()
{
    cin>>n>>k;
    for(int i=1; i<=n; i++)
        cin>>a[i];
    for(int i=1; i<=n; i++)
    {
        if(a[i-1]%k>a[i]%k)b[i]++;
        b[i]+=b[i-1];
    }
    for(int i=1; i<=n; i++)
        a[i]=a[i]/k-b[i],st[0][i].a=a[i],st[0][i].b=i,c[i]=c[i-1]+a[i];
    for(int i=1; i<19; i++)
        for(int j=1; j<=n; j++)
            if(st[i-1][j+(1<<(i-1))].a<=st[i-1][j].a)st[i][j]=st[i-1][j+(1<<(i-1))];
            else st[i][j]=st[i-1][j];
    solve();
    cin>>m;
    for(int i=1; i<=m; i++)
    {
        cin>>l>>r;
        v2[r].pb({l,i});
    }
    for(int i=1; i<=n; i++)
    {
        for(auto x:v[i])
            st1.upd(1,1,n,x.a,x.a,x.b),
                    st2.upd(1,1,n,x.a,x.a,x.c);
        for(auto x:v2[i])
        {
            s3=get(x.a,i);
            s3+=b[x.a];
            if(s3<0) ans[x.b]=-1;
            else
            {
                s4=c[i]-c[x.a-1];
                s4+=b[x.a]*(i-x.a+1);
                s4-=s3*(i-x.a+1);
                s5=get2(x.a,i);
                s4+=st1.get(1,1,n,s5+1,i);
                s4-=n*st2.get(1,1,n,s5+1,i);
                ans[x.b]=s4;
            }
        }
    }
    for(int i=1; i<=m; i++)
        cout<<ans[i],down
    }

Compilation message

Main.cpp:44:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   44 | main()
      | ^~~~
Main.cpp: In member function 'void IT::upd(long long int, long long int, long long int, long long int, long long int, long long int)':
Main.cpp:61:19: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   61 |          int mid=l+r>>1;
      |                  ~^~
Main.cpp: In member function 'long long int IT::get(long long int, long long int, long long int, long long int, long long int)':
Main.cpp:70:20: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   70 |           int mid=l+r>>1;
      |                   ~^~
Main.cpp: In function 'void solve()':
Main.cpp:100:22: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  100 |             int mid=l+r>>1;
      |                     ~^~
Main.cpp:111:22: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  111 |             int mid=l+r>>1;
      |                     ~^~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 17756 KB Output is correct
2 Correct 3 ms 17856 KB Output is correct
3 Incorrect 3 ms 17756 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 482 ms 159312 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 92 ms 36432 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 368 ms 130392 KB Output is correct
2 Correct 445 ms 158104 KB Output is correct
3 Correct 167 ms 61780 KB Output is correct
4 Correct 448 ms 165784 KB Output is correct
5 Correct 412 ms 154736 KB Output is correct
6 Correct 449 ms 168840 KB Output is correct
7 Correct 377 ms 135760 KB Output is correct
8 Correct 475 ms 169060 KB Output is correct
9 Correct 381 ms 161620 KB Output is correct
10 Correct 403 ms 161364 KB Output is correct
11 Correct 451 ms 165596 KB Output is correct
12 Correct 416 ms 164916 KB Output is correct
13 Correct 494 ms 168788 KB Output is correct
14 Correct 467 ms 164688 KB Output is correct
15 Correct 445 ms 168784 KB Output is correct
16 Correct 405 ms 164692 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 17756 KB Output is correct
2 Correct 3 ms 17856 KB Output is correct
3 Incorrect 3 ms 17756 KB Output isn't correct
4 Halted 0 ms 0 KB -