QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#36127#4269. Rainy MarketsWuyanru0 2ms13972kbC++174.6kb2022-06-24 14:57:202022-06-24 14:57:20

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-06-24 14:57:20]
  • 评测
  • 测评结果:0
  • 用时:2ms
  • 内存:13972kb
  • [2022-06-24 14:57:20]
  • 提交

answer

//DABC ABCD ABCA DBAA
#include<ext/pb_ds/tree_policy.hpp>
#include<ext/pb_ds/assoc_container.hpp>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<bitset>
#include<cstdio>
#include<vector>
#include<random>
#include<ctime>
#include<queue>
#include<map>
#include<set>
namespace nb
{
    #define y1 qwyeiurbvyiorvyiuqwrqweir
    #define j1 rwehiuqrwiviouwaawhrfiuab
    using namespace __gnu_pbds;
    using namespace std;
    #define pause system("pause")
    #define memset(array,num) memset(array,num,sizeof(array))
    template<typename A,typename B>
    using ht=gp_hash_table<A,B>;
    template<typename A>
    using pqueue=priority_queue<A,vector<A>,greater<A> >;
    template<typename A>
    using prque=priority_queue<A>;
    template<typename A>
    using vc=vector<A>;
    using ll=long long;
    using db=double;
    using ld=long double;
    using pi=pair<int,int>;
    using vpi=vector<pi>;
    using pli=pair<ll,int>;
    using vpli=vector<pli>;
    using pl=pair<ll,ll>;
    using vi=vector<int>;
    using vpl=vector<pl>;
    using vl=vector<ll>;
    mt19937 _rand(time(0)^clock());
    inline int lowbit(int i){ return i&(-i);}
    inline int read()
    {
        int s=0,w=1;char ch;
        while((ch=getchar())>'9'||ch<'0') if(ch=='-') w=-1;
        while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
        return s*w;
    }
    inline ll lread()
    {
        ll s=0,w=1;char ch;
        while((ch=getchar())>'9'||ch<'0') if(ch=='-') w=-1;
        while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
        return s*w;
    }
    inline ll qow(ll a,int b,int mod)
    {
        ll ans=1;
        while(b)
        {
            if(b&1) ans=ans*a%mod;
            a=a*a%mod;
            b>>=1;
        }
        return ans;
    }
    inline ll cheng(ll a,ll b,ll mod)
    {
        ll ans=0;
        while(b)
        {
            if(b&1) ans+=a;
            a=a*2%mod;
            b>>=1;
        }
        return ans;
    }
    inline ll qow(ll a,ll b,ll mod)
    {
        ll ans=1;
        while(b)
        {
            if(b&1) ans=cheng(ans,a,mod);
            a=cheng(a,a,mod);
            b>>=1;
        }
        return ans;
    }
    template<const int N,const int M>
    struct graph
    {
        int head[N+5];
        int t[M+5];
        int n[M+5];
        int cntm;
        graph(){ cntm=1;}
        void clear(int n)
        {
            cntm=1;
            for(int i=1;i<=n;i++) head[i]=0;
        }
        void ad(int u,int v)
        {
            cntm++;
            t[cntm]=v;
            n[cntm]=head[u];
            head[u]=cntm;
        }
        void add(int u,int v)
        {
            ad(u,v);
            ad(v,u);
        }
        int st(int u){ return head[u];}
        int to(int u){ return t[u];}
        int nx(int u){ return n[u];}
    };
    template<const int N,const int M>
    struct graphw
    {
        int head[N+5];
        int ww[M+5];
        int t[M+5];
        int n[M+5];
        int cntm;
        graphw(){ cntm=1;}
        void ad(int u,int v,int w)
        {
            cntm++;
            t[cntm]=v;
            n[cntm]=head[u];
            ww[cntm]=w;
            head[u]=cntm;
        }
        void add(int u,int v,int w)
        {
            ad(u,v,w);
            ad(v,u,w);
        }
        int st(int u){ return head[u];}
        int to(int u){ return t[u];}
        int nx(int u){ return n[u];}
        int w(int u){ return ww[u];}
    };
}
using namespace nb;
int buy[1000001];
int l[1000001];
int r[1000001];
int b[1000001];
int p[1000001];
int u[1000001];
ll ans;
int n;
int main()
{
    n=read();
    for(int i=1;i<=n;i++) b[i]=read();
    for(int i=1;i<n;i++) p[i]=read();
    for(int i=1;i<n;i++) u[i]=read();
    for(int i=1;i<n;i++)
    {
        int num=min(u[i],p[i]);ans+=num,p[i]-=num;
        int num1=min(p[i],b[i]);p[i]-=num1,b[i]-=num1;
        int num2=min(p[i],b[i+1]);p[i]-=num2,b[i+1]-=num2;
        l[i]=num1,r[i]=num2,buy[i]=num;
        // printf("%d : %d %d %d  %d\n",i,l[i],buy[i],r[i],p[i]);
        if(p[i]){ printf("NO\n");return 0;}
    }
    printf("YES\n");
    for(int i=1;i<n;i++)
    {
        int num1=min(buy[i],b[i]);ans-=num1;
        l[i]+=num1,b[i]-=num1,buy[i]-=num1;

        int num3=min(r[i],b[i+1]);
        l[i]+=num3,b[i]-=num3,r[i]-=num3,b[i+1]+=num3;

        int num2=min(buy[i],b[i+1]);ans-=num2;
        r[i]+=num2,b[i+1]-=num2,buy[i]-=num2;
    }
    printf("%lld\n",ans);
    for(int i=1;i<n;i++) printf("%d %d %d\n",l[i],buy[i],r[i]);
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 5
Accepted
time: 2ms
memory: 13924kb

input:

3
10 15 10
20 20
0 0

output:

NO

result:

ok IMPOSSIBLE

Test #2:

score: -5
Wrong Answer
time: 2ms
memory: 13936kb

input:

2
813741488 132495829
946237313
0

output:

YES
0
813741492 0 132495821

result:

wrong answer the bus station 1 exceeds its capacity

Subtask #2:

score: 0
Wrong Answer

Test #36:

score: 0
Wrong Answer
time: 0ms
memory: 13972kb

input:

3
10 15 10
20 20
0 11

output:

YES
1
10 0 10
9 1 10

result:

wrong answer the cost you declared is 1, but expected 5

Subtask #3:

score: 0
Skipped

Dependency #2:

0%

Subtask #4:

score: 0
Skipped

Dependency #1:

0%