Submission #23036

#TimeUsernameProblemLanguageResultExecution timeMemory
23036ngkan146Boat (APIO16_boat)C++98
9 / 100
0 ms2032 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod = (ll) 1e9+7;
int n, a[505], b[505];
vector <int> mjk(1,0);
ll dp[505];
int len(int l1,int r1,int l2,int r2){
   return max(0, min(r1,r2) - max(l1,l2) + 1);
}
int main(){
   scanf("%d",&n);
   for(int i=1;i<=n;i++)
      scanf("%d %d",&a[i],&b[i]),
      mjk.push_back(a[i]),
      mjk.push_back(b[i]);
   sort(mjk.begin(),mjk.end());
   mjk.push_back((int)1e9+1);
   mjk.resize(unique(mjk.begin(),mjk.end()) - mjk.begin());
   dp[0] = 1;
   for(int i=1;i<=n;i++){
      ll cnt = 0;
      for(int j=0;j<mjk.size()-1;j++){
         ll tmp = cnt + dp[j];
         dp[j] = (dp[j] + len(mjk[j], mjk[j+1]-1, a[i], b[i]) * cnt) % mod;
         cnt = tmp;
      }
   }
   ll ans = 0;
   for(int i=1;i<mjk.size()-1;i++)
      ans = (ans + dp[i]) % mod;
   cout << ans;
}

Compilation message (stderr)

boat.cpp: In function 'int main()':
boat.cpp:23:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(int j=0;j<mjk.size()-1;j++){
                    ^
boat.cpp:30:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int i=1;i<mjk.size()-1;i++)
                 ^
boat.cpp:12:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d",&n);
                  ^
boat.cpp:16:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
       mjk.push_back(b[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...