Submission #945995

#TimeUsernameProblemLanguageResultExecution timeMemory
945995kokoxuyaFancy Fence (CEOI20_fancyfence)C++14
12 / 100
1 ms600 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define moddy 1000000007 int findRect(int height, int width, int inc) { //cout << height << " " << width << " " << inc << " "; int ans = (height + 1) * height / 2; ans *= width; ans *= inc; //cout << ans << "\n"; return ans; } int incRect(int height, int width) { //cout << height << " " << width << " "; int ans = height * (height + 1)/2; ans *= ((width + 1) * width/2); //cout << ans << "\n"; return ans; } signed main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int N; cin >> N; vector<int>heights(N + 20); vector<int>widths(N + 20); for (int a = 1; a <= N; a++) { cin >> heights[a]; } for (int a = 1; a <= N; a++) { cin >> widths[a]; } int ans = 0; queue<pair<int,int>>prevvy; //height, width for (int curr = 1; curr <= N; curr++) { //cout << "at rectangle " << curr << ":\n"; int at = 0,prevwidth = 0; queue<pair<int,int>>curry; while (!prevvy.empty()) { if (at == heights[curr]) { break; } ans += (findRect(min(heights[curr], prevvy.front().first), prevvy.front().second, widths[curr])); ans -= (findRect(at,prevvy.front().second,widths[curr])); ans %= moddy; curry.push({min(heights[curr], prevvy.front().first), prevvy.front().second + widths[curr]}); at = min(heights[curr], prevvy.front().first); //cout << "\n"; prevvy.pop(); } ans += incRect(heights[curr],widths[curr]); ans %= moddy; if (at != heights[curr]) { curry.push({heights[curr],widths[curr]}); } prevvy = curry; } ans %= moddy; cout << ans; //cout << " at end "; }

Compilation message (stderr)

fancyfence.cpp: In function 'int main()':
fancyfence.cpp:47:14: warning: unused variable 'prevwidth' [-Wunused-variable]
   47 |   int at = 0,prevwidth = 0;
      |              ^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...