제출 #1167494

#제출 시각아이디문제언어결과실행 시간메모리
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...