이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define Mod 1000000007
int n;
int l[1000];
int r[1000];
int sum[1000010];
int seg[4000010];
map<int,bool> taken;
map<int,int> idx;
vector<int> v;
int getsum(int s,int e,int idx,int l,int r){
if(s > r || e < l)
return 0;
if(s >=l && e <= r)
return seg[idx];
int f = getsum(s,(s+e)/2,idx*2,l,r);
if(f >= Mod)
f-=Mod;
int ss = getsum((s+e)/2+1,e,idx*2+1,l,r);
if(ss >= Mod)
ss-=Mod;
f+=ss;
if(f >= Mod)
f-=Mod;
return f;
}
int update(int s,int e,int idx,int idx2,int val){
if(s > idx2 || e < idx2)
return seg[idx];
if(s == idx2 && e == idx2)
return seg[idx] = val;
int f = update(s,(s+e)/2,idx*2,idx2,val);
if(f >= Mod)
f-=Mod;
int ss = update((s+e)/2+1,e,idx*2+1,idx2,val);
if(ss >= Mod)
ss-=Mod;
seg[idx] = f+ ss;
if(seg[idx] >= Mod)
seg[idx]-=Mod;
return seg[idx];
}
int main() {
//freopen("in.txt","r",stdin);
scanf("%d",&n);
int all = 0;
for(int i=0;i<n;i++){
scanf("%d%d",&l[i],&r[i]);
for(int j=l[i];j<=r[i];j++){
if(taken[j])
continue;
taken[j] = true;
v.push_back(j);
}
}
int ans = 0 ;
all = v.size();
sort(v.begin(),v.end());
for(int i=0;i<(int)v.size();i++){
idx[v[i]] = i ;
}
for(int i=0;i<n;i++){
for(int j=l[i];j<=r[i];j++){
if(idx[j] == 0){
ans++;
if(ans >= Mod)
ans-=Mod;
sum[0]++;
if(sum[0] >= Mod)
sum[0]-=Mod;
continue;
}
int cur = 0;
cur = getsum(0,all-1,1,0,idx[j]-1) + 1;
if(cur >= Mod)
cur-=Mod;
ans+=cur;
sum[idx[j]]+=cur;
}
for(int j=l[i];j<=r[i];j++){
update(0,all-1,1,idx[j],sum[idx[j]]);
}
}
printf("%d\n",getsum(0,all-1,1,0,all-1));
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
boat.cpp: In function 'int main()':
boat.cpp:52:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&n);
^
boat.cpp:55:34: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",&l[i],&r[i]);
^
# | 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... |