Submission #12032

#TimeUsernameProblemLanguageResultExecution timeMemory
12032gs14004trapezoid (balkan11_trapezoid)C++98
35 / 100
500 ms6252 KiB
#include <cstdio> #include <vector> #include <algorithm> using namespace std; int n; int a[100005], b[100005], c[100005], d[100005]; vector<int> vu, vd; int dp[100005], cnt[100005]; int main(){ scanf("%d",&n); for (int i=0; i<n; i++) { scanf("%d %d %d %d",&a[i],&b[i],&c[i],&d[i]); vu.push_back(a[i]); vu.push_back(b[i]); vd.push_back(c[i]); vd.push_back(d[i]); } sort(vu.begin(),vu.end()); sort(vd.begin(),vd.end()); for (int i=0; i<n; i++) { a[i] = (int)(lower_bound(vu.begin(),vu.end(),a[i]) - vu.begin()); b[i] = (int)(lower_bound(vu.begin(),vu.end(),b[i]) - vu.begin()); c[i] = (int)(lower_bound(vd.begin(),vd.end(),c[i]) - vd.begin()); d[i] = (int)(lower_bound(vd.begin(),vd.end(),d[i]) - vd.begin()); } for (int i=0; i<n; i++) { dp[i] = 1; for (int j=0; j<n; j++) { if(b[j] < a[i] && d[j] < c[i]){ dp[i] = max(dp[i],dp[j]+1); } } for (int j=0; j<n; j++) { if(dp[j] && dp[j] + 1 == dp[i] && b[j] < a[i] && d[j] < c[i]){ cnt[i] += cnt[j]; cnt[i] %= 30013; } } if(dp[i] == 1) cnt[i] = 1; } int mcnt = *max_element(dp,dp+n); int rcnt = 0; for (int i=0; i<n; i++) { if(dp[i] == mcnt){ rcnt += cnt[i]; rcnt %= 30013; } } printf("%d %d",mcnt,rcnt); }

Compilation message (stderr)

trapezoid.cpp: In function 'int main()':
trapezoid.cpp:12:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&n);
                   ^
trapezoid.cpp:14:53: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d %d %d",&a[i],&b[i],&c[i],&d[i]);
                                                     ^
#Verdict Execution timeMemoryGrader output
Fetching results...