QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#414565#2929. Concert RehearsalTheSleepyDevil#WA 1ms3552kbC++143.6kb2024-05-19 09:38:292024-05-19 09:38:29

Judging History

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

  • [2024-05-19 09:38:29]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3552kb
  • [2024-05-19 09:38:29]
  • 提交

answer

    /*
     Hell, 'til I reach Hell, I ain't scared
     Mama checkin' in my bedroom, I ain't there
                                                */
    #include<bits/stdc++.h>
    #include <ext/pb_ds/assoc_container.hpp>
    #include <ext/pb_ds/tree_policy.hpp>
    using namespace __gnu_pbds;
    using namespace std;

    #define Major  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    #define TxtIO   freopen("input.txt","r",stdin); freopen("output.txt","w",stdout);
    #define read(a,n) for(int i = 0 ; i<n ; i++) cin>>a[i];
    #define write(a) for(auto x : a) cout<<x<<" ";
    #define int long long
    #define pb push_back
    #define all(a)  a.begin(),a.end()
    #define el "\n"

    typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;

    const int inf=4e18;

    int dx[]={1,0,-1,0,1,1,-1,-1};
    int dy[]={0,1,0,-1,1,-1,1,-1};

    const int mod=1e9+7;
    const int MAX =1e6+7;

   // ---------------------------Function----------------------------------//

    void TestCake(){
      int n,p,k;
      cin>>n>>p>>k;
      vector<pair<int,int>>all;
      int sum=0;
      for(int i=0;i<n;i++){
         int x;cin>>x;
         all.pb({i,x});
         sum+=x;
      }
//      if(sum<=p){
//        int here=p*k;
//        here/=sum;
//        cout<<here<<el;return;
//      }
      set<vector<pair<int,int>>>st;
      vector<vector<pair<int,int>>>last;
      int ok=0;
       int cur=0;
        vector<pair<int,int>>here;
      while(k){

          for(int i=0;i<n&&k;i++){
             if((cur+all[i].second)<=p){
                cur+=all[i].second;
                here.pb({i,all[i].second});
             }
             else{
                k--;
                cur=0;
                i--;
                if(st.find(here)!=st.end()){
                     last.pb(here);
                    ok=1;break;
                }
                else{
                    st.insert(here);
                    last.pb(here);
                }
                here.clear();
             }
          }
          if(ok)break;
      }
      if(!ok){
         map<int,int>mp;
          for(int i=0;i<last.size();i++){
             for(auto x : last[i])mp[x.first]++;
          }
           int mn=inf;
           for(int i=0;i<n;i++){
             mn=min(mn,mp[i]);
          }
          cout<<mn<<el;
          return;
      }
      if(ok)k++;

      for(auto z : last){
        for(auto x : z){
        cout<<x.first<<" "<<x.second<<el;
        }
        cout<<el;
      }
      int id=0;
      for(int i=0;i<last.size()-1;i++){
          if(last[i]==last.back()){
              id=i;
              break;
          }
      }

      map<int,int>mp;
      for(int i=id;i<last.size()-1;i++){
         for(auto x : last[i])mp[x.first]++;
      }

      int sz=last.size()-id-1;

      int cnt=k/sz,lft=k%sz;


       for(int i=0;i<n;i++){
          mp[i]+=(mp[i]*cnt);
      }

      for(int i=id;i<last.size()-1&&lft;i++){
         for(auto x : last[i])mp[x.first]++;
         lft--;
      }
      for(int i=0;i<id;i++){
         for(auto x : last[i])mp[x.first]++;
      }
     int mn=inf;
       for(int i=0;i<n;i++){
         mn=min(mn,mp[i]);
      }

      cout<<mn;
    }
    //------------------------------Main---------------------------//
    signed main(){
        Major
        int T = 1;
//        cin >> T;
        while(T--){
            TestCake();
        //       cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
        }
        return 0;
    }

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3552kb

input:

3 20 10
6
9
5

output:

0 6
1 9
2 5

0 6
1 9
2 5

10

result:

wrong answer 1st lines differ - expected: '10', found: '0 6'