Submission #1167494

#TimeUsernameProblemLanguageResultExecution timeMemory
1167494JungPSLasers (NOI19_lasers)C++17
24 / 100
343 ms28476 KiB
#include<iostream> #include<vector> #include<utility> #include<algorithm> #include<cstring> #include<set> #include<map> using namespace std; pair<int,int> get(int a,int b,int c){ return {b-c+1,a+c-1}; } set<int> st; map<int,int> ep; map<int,int> fn; int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int l,r,x,tmp; cin >> l >> r; while(r--){ vector<int> vec,raw; vec.push_back(0); raw.push_back(0); int x; cin >> x; int sum=0; for(int i=1;i<=x;++i){ cin >> tmp; raw.push_back(tmp); vec.push_back(tmp); vec[i]+=vec[i-1]; sum+=tmp; } ep.clear(); for(int i=0;i<x;++i){ if(vec[x-i-1]>=1){ ++ep[1]; --ep[vec[x-i-1]+1]; } pair<int,int> tmp=get(vec[x-i-1]+1,l-sum+vec[x-i],raw[x-i]); if(tmp.second>=tmp.first){ ++ep[tmp.first]; --ep[tmp.second+1]; } if(l>=l-sum+vec[x-i]+1){ ++ep[l-sum+vec[x-i]+1]; --ep[l]; } } int tmp=0; int tmp2=0; for(auto it=ep.begin();it!=ep.end();++it){ if(tmp==x){ ++fn[tmp2]; --fn[it->first]; } tmp+=it->second; if(tmp==x){ tmp2=it->first; } } } int ftmp=0; int ftmp2=0; int ans=0; for(auto it=fn.begin();it!=fn.end();++it){ if(ftmp+it->second==0){ ans+=it->first-ftmp2; } ftmp+=it->second; if(ftmp-it->second==0){ ftmp2=it->first; } } cout << ans; }
#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...