제출 #764616

#제출 시각아이디문제언어결과실행 시간메모리
764616Ahmed57Boat (APIO16_boat)C++17
31 / 100
469 ms28540 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
long long z = 0;
long long bit[1000001];
long long mod = 1000000007;
void add(long long e,long long v){
    while(e<=z){
        bit[e]+=v;
        bit[e]%=mod;
        e+=(e&-e);
    }
}
long long sum(long long e){
    long long res = 0;
    while(e>=1){
        res+=bit[e];
        res%=mod;
        e-=(e&-e);
    }
    return res;
}
signed main(){
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int n;
    cin>>n;
    map<long long,long long> comp,sav;
    vector<pair<long long,long long>> v;
    vector<long long> ans;
    for(int i = 0;i<n;i++){
        long long x,y;
        cin>>x>>y;
        v.push_back({x,y});
        for(int i = x-100;i<=x+100;i++){
            ans.push_back(i);
        }
        for(int i = y-100;i<=y+100;i++){
            ans.push_back(i);
        }
    }
    sort(ans.begin(),ans.end());
    vector<pair<long long,long long>> all[n];
    for(int i = 0;i<v.size();i++){
        long long st = v[i].first;
        while(st<=v[i].second){
            int it = lower_bound(ans.begin(),ans.end(),st+1)-ans.begin();
            all[i].push_back({st,ans[it]-1});
            comp[st]++;comp[ans[it]-1]++;
            st = ans[it];
        }
    }
    for(auto i:comp){
        sav[i.first] = ++z;
    }
    long long fin = 0;
    for(int i = n-1;i>=0;i--){
        for(auto j:all[i]){
            long long val = (((sum(z)-sum(sav[j.second])+1)%mod)+mod)%mod;
            long long sz = (val*((j.second-j.first+1)%mod))%mod;
            fin+=sz;fin%=mod;
            add(sav[j.first],sz);
        }
    }
    cout<<fin<<endl;
}

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

boat.cpp: In function 'int main()':
boat.cpp:43:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |     for(int i = 0;i<v.size();i++){
      |                   ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...