제출 #1021442

#제출 시각아이디문제언어결과실행 시간메모리
1021442vjudge1Rectangles (IOI19_rect)C++17
13 / 100
268 ms135252 KiB
#include <bits/stdc++.h> #pragma GCC optimize("Ofast") #pragma GCC target("avx2") #pragma GCC optimization ("O3") #pragma GCC optimization ("unroll-loops") #pragma GCC target("popcnt") #define endl '\n' #define mp make_pair #define pb push_back #define fi first #define se second #define fo(i,n) for(auto i =0 ; i < n;i++) #define fore(i,l,r) for(auto i = l; i < r;i++) #define forex(i,r,l) for(auto i = r; i >= l; i--) #define ffo(i,n) forex(i,n-1,0) #define all(x) x.begin(),x.end() #define lsb(x) x&(-x) #define sz(x) (int)x.size() #define gcd(a,b) __gcd(a,b) #define vii vector<ii> #define pq_min(a) priority_queue<a, vector<a>, greater<a>> #define fls cout.flush() using namespace std; using ll = long long; using ull = unsigned long long; using vi = vector<int>; using ii = pair<int,int>; using mii = map<int,int>; using lld = long double; void valid(ll in){cout<<((in)?"YES\n":"NO\n");} const int N = 2505; int pf[N][N], jump[N][N],jump2[N][N]; int query(int r1, int c1, int r2, int c2){ assert(min({r1,c1,r2,c2})>0); return pf[r2][c2] - pf[r1-1][c2] - pf[r2][c1-1] + pf[r1-1][c1-1]; } ll count_rectangles(vector<vi> a){ ll ans = 0; int n = sz(a), m= sz(a[0]); // cout << n << " " << m << endl; fls; fore(i,1,n+1) fore(j,1,m+1) pf[i][j] = a[i-1][j-1] + pf[i-1][j] + pf[i][j-1] - pf[i-1][j-1]; // cout << "DIE" << endl; fls; fore(i,1,n+1) forex(j,m,1){ if(a[i-1][j-1])jump[i][j]=j; else jump[i][j] = jump[i][j+1]; } // cout << "DIE" << endl; fls; fore(j,1,m+1) forex(i,n,1){ if(a[i-1][j-1])jump2[i][j]=i; else jump2[i][j]=jump2[i+1][j]; } // cout << "DIE" << endl; fls; fore(r1,2,n) fore(c1,2,m){ if(a[r1-1][c1-1])continue; // cout << r1 << " " << c1 << endl; fls; int c2 = jump[r1][c1]-1; int r2 = jump2[r1][c1]-1; if(r2<r1||c2<c1)continue; if(c2>=m||r2>=n)continue; if(query(r1,c1,r2,c2)==0&&query(r1-1,c1,r1-1,c2)==c2-c1+1&&query(r2+1,c1,r2+1,c2)==c2-c1+1&&query(r1,c1-1,r2,c1-1)==r2-r1+1&&query(r1,c2+1,r2,c2+1)==r2-r1+1) ans++; } fo(i,n+2) fo(j,m+2) pf[i][j]=jump[i][j]=jump2[i][j]=0; return ans; }

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

rect.cpp:4: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    4 | #pragma GCC optimization ("O3")
      | 
rect.cpp:5: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    5 | #pragma GCC optimization ("unroll-loops")
      |
#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...