| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1167482 | JungPS | Lasers (NOI19_lasers) | C++17 | 1092 ms | 235200 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;
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;
for(int i=1;i<=l;++i){
tmp+=ep[i];
if(tmp==x){
st.insert(i);
}
}
}
cout << st.size();
}| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
