답안 #400513

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
400513 2021-05-08T08:37:53 Z A_D Boat (APIO16_boat) C++14
0 / 100
2000 ms 332 KB
#include <bits/stdc++.h>
#define int long long
#define ii pair<int,int>
#define F first
#define S second
#define du long double
using namespace std;
const int N=1e3+1;
const int M=1e6+100;
const int MOD=1e9+7;
int a[N];
int b[N];
int seg[4*M];
void update(int p,int s,int e,int i,int v)
{
    if(s==e){
        seg[p]+=v;
        seg[p]%=MOD;
        return;
    }
    int mid=(s+e)/2;
    if(i<=mid){
        update(p*2,s,mid,i,v);
    }
    else{
        update(p*2+1,mid+1,e,i,v);
    }
    seg[p]=(seg[p*2]+seg[p*2+1])%MOD;
}
int get(int p,int s,int e,int a,int b)
{
    if(a<=s&&e<=b){
        return seg[p];
    }
    if(s>b||e<a){
        return 0;
    }
    int mid=(s+e)/2;
    return (get(p*2,s,mid,a,b)+get(p*2+1,mid+1,e,a,b))%MOD;
}
void fix()
{
    cout<<endl<<endl;
    for(int i=1;i<=7;i++)cout<<get(1,1,M,i,i)<<" ";cout<<endl;
    cout<<endl<<endl;
}
void solve()
{
    int n,ans=0,mn=1e9;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i]>>b[i];
        mn=min(mn,a[i]);
    }
    for(int i=1;i<=n;i++){
       // fix();
        a[i]=a[i]-mn+2;
        b[i]=b[i]-mn+2;
        for(int j=a[i];j<=b[i];j++){
            int v=get(1,1,M,1,j-1)+1;
//            cout<<v<<" ";
            ans+=v;
            ans%=MOD;
        }
  //      cout<<endl;
        for(int j=b[i];j>=a[i];j--){
            int v=get(1,1,M,1,j-1)+1;
            update(1,1,M,j,v);
        }
    }
    cout<<ans<<endl;
    /*
    while(1){
        int a,b;
        cin>>a>>b;
        cout<<get(1,1,M,a,b)<<endl;
    }
    */
}
main()
{
    int t=1;
//    cin>>t;
    while(t--)solve();
}

Compilation message

boat.cpp: In function 'void fix()':
boat.cpp:44:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   44 |     for(int i=1;i<=7;i++)cout<<get(1,1,M,i,i)<<" ";cout<<endl;
      |     ^~~
boat.cpp:44:52: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   44 |     for(int i=1;i<=7;i++)cout<<get(1,1,M,i,i)<<" ";cout<<endl;
      |                                                    ^~~~
boat.cpp: At global scope:
boat.cpp:80:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   80 | main()
      |      ^
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 332 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 332 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2089 ms 204 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 332 KB Output isn't correct
2 Halted 0 ms 0 KB -