QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#686232#8936. Team ArrangementzhenzitouRE 0ms0kbC++142.1kb2024-10-29 09:19:322024-10-29 09:19:33

Judging History

This is the latest submission verdict.

  • [2024-10-29 09:19:33]
  • Judged
  • Verdict: RE
  • Time: 0ms
  • Memory: 0kb
  • [2024-10-29 09:19:32]
  • Submitted

answer

#include <bits/stdc++.h>
//#pragma GCC optimize(2,3,"Ofast","inline","-ffast-math")
using namespace std;
template<typename TP> inline TP read()
{
    char ch=getchar();
    while(ch!='-' && !isdigit(ch))ch=getchar();
    TP rst=0;bool mns=0;
    if(ch=='-'){mns=1;ch=getchar();}
    while(isdigit(ch)){rst=(rst<<3)+(rst<<1)+ch-'0';ch=getchar();}
    return mns?-rst:rst;
}
namespace fileIO
{
    inline void wi(){cerr<<"No file input.\n";}
    inline void wo(){cerr<<"No file output.\n";}
    inline void fi(string i)
    {
        if(i=="")wi();else cerr<<"Using file input "<<i<<'\n';
        freopen(i.c_str(),"r",stdin);
    }
    inline void fo(string o)
    {
        if(o=="")wo();else cerr<<"Using file output "<<o<<'\n';
        freopen(o.c_str(),"w",stdout);
    }
    inline void fI(string nm){nm==""?wi():fi(nm+".in");}
    inline void fO(string nm){nm==""?wo():fo(nm+".out");}
    inline void f(string nm){fI(nm),fO(nm);}
}
inline void main_init()
{
    fileIO::f("io");
    ios::sync_with_stdio(0),cin.tie(),cout.tie();
}
int n,w[69],ans=-1000000001;
vector<int> a[69];
list<int> CNT;
inline bool check()
{
    priority_queue<int> q;
    int nw=0;
    list<int> cnt=CNT;
    while(!cnt.empty())
    {
        int u=cnt.front();
        cnt.pop_front();
        while(nw<u)
        {
            ++nw;
            for(int &v:a[nw])q.push(-v);
        }
        int lft=u;
        while(lft--)
        {
            if(q.empty()||-q.top()<u)return 0;
            q.pop();
        }
    }
    return 1;
}
inline void dfs(int u,int v,int mn)
{
    if(u>n){if(check())ans=max(ans,v);return;}
    for(int i=mn;i<=n-u+1;++i)
    {
        CNT.push_back(i);
        dfs(i+u,v+w[i],i);
        CNT.pop_back();
    }
}
inline void main_solve()
{
    n=read<int>();
    for(int i=1;i<=n;++i)
    {
        int l=read<int>(),r=read<int>();
        a[l].push_back(r);
    }
    for(int i=1;i<=n;++i)w[i]=read<int>();
    dfs(1,0,1);
    if(ans==-1000000001)puts("impossible");else printf("%d",ans);
}
int main(){main_init();main_solve();return 0;}

詳細信息

Test #1:

score: 0
Dangerous Syscalls

input:

3
2 3
1 2
2 2
4 5 100

output:


result: