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
AC × 2
AC × 20
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