Submission #22076

#TimeUsernameProblemLanguageResultExecution timeMemory
22076아재 goto 써요? (#42)구간들 (KRIII5P_3)C++14
7 / 7
113 ms5180 KiB
// =====================================================================================
// 
//       Filename:  i.cpp
//        Created:  2017년 04월 29일 15시 53분 37초
//       Compiler:  g++ -O2 -std=c++14
//         Author:  baactree ,  bsj0206@naver.com
//        Company:  Chonnam National University
// 
// =====================================================================================

#include <bits/stdc++.h>
using namespace std;
int n;
vector<pair<int, int> > event;
const int mod=1000000007;
typedef long long ll;
ll _pow(ll a, ll b){
	if(b==0)
		return 1;
	ll temp=_pow(a, b/2);
	temp=(temp*temp)%mod;
	if(b&1)
		return (temp*a)%mod;
	return temp;
}
int main(){
	scanf("%d", &n);
	for(int i=0;i<n;i++){
		int a, b;
		scanf("%d%d", &a, &b);
		if(a>=b)
			continue;
		event.push_back({a, 1});
		event.push_back({b, 0});
	}
	sort(event.begin(), event.end());
	int cnt=0;
	ll len=0;
	ll ans=0;
	int pre=0;
	for(int i=0;i<event.size();i++){
		int x=event[i].first;
		int m=event[i].second;
		len+=(long long)(x-pre)*(_pow(2, cnt)-1+mod);
		len%=mod;
		if(m){
			ans+=_pow(2, cnt);
			ans%=mod;
			cnt++;
		}
		else{
			cnt--;
		}
		pre=x;
	}
	printf("%lld %lld\n", len, ans);
	return 0;
}

Compilation message (stderr)

i.cpp: In function 'int main()':
i.cpp:41:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<event.size();i++){
               ^
i.cpp:27:17: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
                 ^
i.cpp:30:24: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", &a, &b);
                        ^
#Verdict Execution timeMemoryGrader output
Fetching results...