제출 #1157116

#제출 시각아이디문제언어결과실행 시간메모리
1157116keremOsumnjičeni (COCI21_osumnjiceni)C++20
0 / 110
1095 ms320 KiB
#include <bits/stdc++.h>
using namespace std;
//~ #define int long long
#define fr first
#define sc second
#define pb push_back
#define endl "\n"
#define all(x) x.begin(),x.end()
#define sp << " " <<
#define inf 1e18+1
#define N 500
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);cout<<fixed<<setprecision(0)
 
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
typedef tuple<int,int,int> tiii;
typedef pair<int,int> pii;


void solve(){
	int n;
	cin >> n;
	vector<pii> d,h;
	vector<int> a;
	set<pii> s;
	d.assign(n+5,pii());
	h.assign(n+5,pii());
	a.assign(n+5,0);
	for(int i=1;i<=n;i++)
		cin >> h[i].fr >> h[i].sc;
	int j=1;
	for(int i=1;i<=n;i++){
		if(j<=n){
			auto it=s.upper_bound(h[j]);
			while(j<=n && (it==s.end() || h[j].sc<it->fr) && (it==s.begin() || (--it)->sc<h[j].fr)){
				s.insert(h[j]);
				j++;
				it=s.upper_bound(h[j]);
			}
		}
		a[i]=j;
		s.erase(h[i]);
	}
	d[n+1].fr=n+1;
	d[n+1].sc=0;
	for(int i=n;i>=1;i--){
		if(i/N==a[i]/N){
			d[i].fr=d[a[i]].fr;
			d[i].sc=d[a[i]].sc+1;
		}
		else{
			d[i].fr=a[i];
			d[i].sc=1;
		}
	}
	int q;
	cin >> q;
	while(q--){
		int l,r;
		cin >> l >> r;
		int ans=0;
		while(l/N<r/N){
			ans+=d[l].sc;
			l=d[l].fr;
		}
		while(l<=r){
			ans++;
			l=a[l];
		}
		cout << ans << endl;
	}
}     
int32_t main(){
	freopen("a.txt","r",stdin);
	fast;
	int test=1;
	//~ cin >> test;
	while(test--) solve();
}

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp: In function 'int32_t main()':
Main.cpp:73:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   73 |         freopen("a.txt","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~
#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...