Submission #42139721
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pi;
int n;
int A[200005];
vector<pi>v = {pi(-1,-1)};
int psum[200005];
int upper(int x){
int l = 0,r = v.size()-1;
while(l<=r){
int m = (l+r)>>1;
if(v[m].first <= x) l = m+1;
else r = m-1;
}
return l;
}
int lower(int x){
int l = 0,r = v.size()-1;
while(l<=r){
int m = (l+r)>>1;
if(v[m].first < x) l = m+1;
else r = m-1;
}
return l;
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(NULL);
cin>>n;
for(int i=1; i<=n; i++) cin>>A[i];
for(int i=2; i<=n; i+=2) v.emplace_back(pi(A[i],A[i+1]));
for(int i=1; i<v.size(); i++) psum[i] = v[i].second - v[i].first;
for(int i=1; i<v.size(); i++) psum[i]+=psum[i-1];
int q; cin>>q;
while(q--){
int l,r; cin>>l>>r;
int x = lower(l);
int ans = 0;
if(x && v[x-1].second >= l) ans+=min(v[x-1].second,r) - l;
//from x...
if(x == v.size() || v[x].first > r){
cout<<ans<<'\n';
continue;
}
if(v[x].second >= r) ans+=r-v[x].first;
else{
int y = upper(r);
y--;
if(v[y].second <= r) ans+=psum[y] - psum[x-1];
else{
ans+=psum[y-1] - psum[x-1];
ans+=r - v[y].first;
}
}
cout<<ans<<'\n';
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - Sleep Log |
| User | belphegor |
| Language | C++ (GCC 9.2.1) |
| Score | 450 |
| Code Size | 1250 Byte |
| Status | AC |
| Exec Time | 119 ms |
| Memory | 5260 KiB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:32:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<int, int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
32 | for(int i=1; i<v.size(); i++) psum[i] = v[i].second - v[i].first;
| ~^~~~~~~~~
./Main.cpp:33:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<int, int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
33 | for(int i=1; i<v.size(); i++) psum[i]+=psum[i-1];
| ~^~~~~~~~~
./Main.cpp:41:8: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<int, int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
41 | if(x == v.size() || v[x].first > r){
| ~~^~~~~~~~~~~
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 450 / 450 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 02_max_09.txt, 02_max_10.txt, 02_max_11.txt, 02_max_12.txt, 02_max_13.txt, 02_max_14.txt, 02_max_15.txt, 03_edge_16.txt, 03_edge_17.txt, 03_edge_18.txt, 03_edge_19.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 7 ms | 3496 KiB |
| 00_sample_01.txt | AC | 2 ms | 3600 KiB |
| 01_random_02.txt | AC | 22 ms | 4740 KiB |
| 01_random_03.txt | AC | 47 ms | 4140 KiB |
| 01_random_04.txt | AC | 89 ms | 4816 KiB |
| 01_random_05.txt | AC | 31 ms | 4232 KiB |
| 01_random_06.txt | AC | 62 ms | 4776 KiB |
| 01_random_07.txt | AC | 93 ms | 4012 KiB |
| 01_random_08.txt | AC | 77 ms | 4772 KiB |
| 02_max_09.txt | AC | 118 ms | 5176 KiB |
| 02_max_10.txt | AC | 118 ms | 5196 KiB |
| 02_max_11.txt | AC | 119 ms | 5132 KiB |
| 02_max_12.txt | AC | 119 ms | 5240 KiB |
| 02_max_13.txt | AC | 116 ms | 5132 KiB |
| 02_max_14.txt | AC | 119 ms | 5244 KiB |
| 02_max_15.txt | AC | 118 ms | 5072 KiB |
| 03_edge_16.txt | AC | 61 ms | 3452 KiB |
| 03_edge_17.txt | AC | 63 ms | 3600 KiB |
| 03_edge_18.txt | AC | 73 ms | 5152 KiB |
| 03_edge_19.txt | AC | 74 ms | 5260 KiB |